Skip to content

Commit 811a4a6

Browse files
akoch-yattaHeikoKlare
authored andcommitted
Revert "[win32] Apply coordinate system change with guards"
This reverts commit 0e7f799.
1 parent 43b6820 commit 811a4a6

File tree

3 files changed

+12
-234
lines changed

3 files changed

+12
-234
lines changed

bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Control.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4007,11 +4007,6 @@ void subclass () {
40074007
public Point toControl (int x, int y) {
40084008
checkWidget ();
40094009
int zoom = getZoom();
4010-
if (getDisplay().isRescalingAtRuntime()) {
4011-
Point displayPointInPixels = getDisplay().translateLocationInPixelsInDisplayCoordinateSystem(x, y);
4012-
final Point controlPointInPixels = toControlInPixels(displayPointInPixels.x, displayPointInPixels.y);
4013-
return DPIUtil.scaleDown(controlPointInPixels, zoom);
4014-
}
40154010
return DPIUtil.scaleDown(toControlInPixels(DPIUtil.scaleUp(x, zoom), DPIUtil.scaleUp(y, zoom)), zoom);
40164011
}
40174012

@@ -4045,7 +4040,9 @@ Point toControlInPixels (int x, int y) {
40454040
public Point toControl (Point point) {
40464041
checkWidget ();
40474042
if (point == null) error (SWT.ERROR_NULL_ARGUMENT);
4048-
return toControl(point.x, point.y);
4043+
int zoom = getZoom();
4044+
point = DPIUtil.scaleUp(point, zoom);
4045+
return DPIUtil.scaleDown(toControlInPixels(point.x, point.y), zoom);
40494046
}
40504047

40514048
/**
@@ -4071,10 +4068,6 @@ public Point toControl (Point point) {
40714068
public Point toDisplay (int x, int y) {
40724069
checkWidget ();
40734070
int zoom = getZoom();
4074-
if (getDisplay().isRescalingAtRuntime()) {
4075-
Point displayPointInPixels = toDisplayInPixels(DPIUtil.scaleUp(x, zoom), DPIUtil.scaleUp(y, zoom));
4076-
return getDisplay().translateLocationInPointInDisplayCoordinateSystem(displayPointInPixels.x, displayPointInPixels.y);
4077-
}
40784071
return DPIUtil.scaleDown(toDisplayInPixels(DPIUtil.scaleUp(x, zoom), DPIUtil.scaleUp(y, zoom)), zoom);
40794072
}
40804073

@@ -4108,7 +4101,9 @@ Point toDisplayInPixels (int x, int y) {
41084101
public Point toDisplay (Point point) {
41094102
checkWidget ();
41104103
if (point == null) error (SWT.ERROR_NULL_ARGUMENT);
4111-
return toDisplay(point.x, point.y);
4104+
int zoom = getZoom();
4105+
point = DPIUtil.scaleUp(point, zoom);
4106+
return DPIUtil.scaleDown(toDisplayInPixels(point.x, point.y), zoom);
41124107
}
41134108

41144109
long topHandle () {

bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java

Lines changed: 6 additions & 173 deletions
Original file line numberDiff line numberDiff line change
@@ -1704,11 +1704,7 @@ public Control getCursorControl () {
17041704
*/
17051705
public Point getCursorLocation () {
17061706
checkDevice ();
1707-
Point cursorLocationInPixels = getCursorLocationInPixels();
1708-
if (isRescalingAtRuntime()) {
1709-
return translateLocationInPointInDisplayCoordinateSystem(cursorLocationInPixels.x, cursorLocationInPixels.y);
1710-
}
1711-
return DPIUtil.autoScaleDown(cursorLocationInPixels);
1707+
return DPIUtil.autoScaleDown(getCursorLocationInPixels());
17121708
}
17131709

17141710
Point getCursorLocationInPixels () {
@@ -2187,21 +2183,14 @@ Monitor getMonitor (long hmonitor) {
21872183
OS.GetMonitorInfo (hmonitor, lpmi);
21882184
Monitor monitor = new Monitor ();
21892185
monitor.handle = hmonitor;
2190-
Rectangle boundsInPixels = new Rectangle(lpmi.rcMonitor_left, lpmi.rcMonitor_top, lpmi.rcMonitor_right - lpmi.rcMonitor_left,lpmi.rcMonitor_bottom - lpmi.rcMonitor_top);
2191-
Rectangle clientAreaInPixels = new Rectangle(lpmi.rcWork_left, lpmi.rcWork_top, lpmi.rcWork_right - lpmi.rcWork_left, lpmi.rcWork_bottom - lpmi.rcWork_top);
2186+
Rectangle boundsInPixels = new Rectangle (lpmi.rcMonitor_left, lpmi.rcMonitor_top, lpmi.rcMonitor_right - lpmi.rcMonitor_left,lpmi.rcMonitor_bottom - lpmi.rcMonitor_top);
2187+
monitor.setBounds (DPIUtil.autoScaleDown (boundsInPixels));
2188+
Rectangle clientAreaInPixels = new Rectangle (lpmi.rcWork_left, lpmi.rcWork_top, lpmi.rcWork_right - lpmi.rcWork_left, lpmi.rcWork_bottom - lpmi.rcWork_top);
2189+
monitor.setClientArea (DPIUtil.autoScaleDown (clientAreaInPixels));
21922190
int [] dpiX = new int[1];
21932191
int [] dpiY = new int[1];
21942192
int result = OS.GetDpiForMonitor (monitor.handle, OS.MDT_EFFECTIVE_DPI, dpiX, dpiY);
21952193
result = (result == OS.S_OK) ? DPIUtil.mapDPIToZoom (dpiX[0]) : 100;
2196-
2197-
if (DPIUtil.isAutoScaleOnRuntimeActive()) {
2198-
int autoscaleZoom = DPIUtil.getZoomForAutoscaleProperty(result);
2199-
monitor.setBounds(getMonitorBoundsInPointsInDisplayCoordinateSystem(boundsInPixels, autoscaleZoom));
2200-
monitor.setClientArea(getMonitorBoundsInPointsInDisplayCoordinateSystem(clientAreaInPixels, autoscaleZoom));
2201-
} else {
2202-
monitor.setBounds(DPIUtil.autoScaleDown(boundsInPixels));
2203-
monitor.setClientArea(DPIUtil.autoScaleDown(clientAreaInPixels));
2204-
}
22052194
if (result == 0) {
22062195
System.err.println("***WARNING: GetDpiForMonitor: SWT could not get valid monitor scaling factor.");
22072196
result = 100;
@@ -2214,13 +2203,6 @@ Monitor getMonitor (long hmonitor) {
22142203
return monitor;
22152204
}
22162205

2217-
private Rectangle getMonitorBoundsInPointsInDisplayCoordinateSystem(Rectangle boundsInPixels, int zoom) {
2218-
Rectangle bounds = DPIUtil.scaleDown(boundsInPixels, zoom);
2219-
bounds.x = boundsInPixels.x;
2220-
bounds.y = boundsInPixels.y;
2221-
return bounds;
2222-
}
2223-
22242206
/**
22252207
* Returns an array of monitors attached to the device.
22262208
*
@@ -2962,9 +2944,6 @@ boolean isValidThread () {
29622944
public Point map (Control from, Control to, Point point) {
29632945
checkDevice ();
29642946
if (point == null) error (SWT.ERROR_NULL_ARGUMENT);
2965-
if (isRescalingAtRuntime()) {
2966-
return map(from, to, point.x, point.y);
2967-
}
29682947
int zoom = getZoomLevelForMapping(from, to);
29692948
point = DPIUtil.scaleUp(point, zoom);
29702949
return DPIUtil.scaleDown(mapInPixels(from, to, point), zoom);
@@ -3012,20 +2991,6 @@ Point mapInPixels (Control from, Control to, Point point) {
30122991
*/
30132992
public Point map (Control from, Control to, int x, int y) {
30142993
checkDevice ();
3015-
if (isRescalingAtRuntime()) {
3016-
Point mappedPointInPoints;
3017-
if (from == null) {
3018-
Point mappedPointInpixels = mapInPixels(from, to, getPixelsFromPoint(to.getShell().getMonitor(), x, y));
3019-
mappedPointInPoints = DPIUtil.scaleDown(mappedPointInpixels, to.getZoom());
3020-
} else if (to == null) {
3021-
Point mappedPointInpixels = mapInPixels(from, to, DPIUtil.scaleUp(new Point(x, y), from.getZoom()));
3022-
mappedPointInPoints = getPointFromPixels(from.getShell().getMonitor(), mappedPointInpixels.x, mappedPointInpixels.y);
3023-
} else {
3024-
Point mappedPointInpixels = mapInPixels(from, to, DPIUtil.scaleUp(new Point(x, y), from.getZoom()));
3025-
mappedPointInPoints = DPIUtil.scaleDown(mappedPointInpixels, to.getZoom());
3026-
}
3027-
return mappedPointInPoints;
3028-
}
30292994
int zoom = getZoomLevelForMapping(from, to);
30302995
x = DPIUtil.scaleUp(x, zoom);
30312996
y = DPIUtil.scaleUp(y, zoom);
@@ -3093,9 +3058,6 @@ private int getZoomLevelForMapping(Control from, Control to) {
30933058
public Rectangle map (Control from, Control to, Rectangle rectangle) {
30943059
checkDevice ();
30953060
if (rectangle == null) error (SWT.ERROR_NULL_ARGUMENT);
3096-
if (isRescalingAtRuntime()) {
3097-
return map(from, to, rectangle.x, rectangle.y, rectangle.width, rectangle.height);
3098-
}
30993061
int zoom = getZoomLevelForMapping(from, to);
31003062
rectangle = DPIUtil.scaleUp(rectangle, zoom);
31013063
return DPIUtil.scaleDown(mapInPixels(from, to, rectangle), zoom);
@@ -3145,20 +3107,6 @@ Rectangle mapInPixels (Control from, Control to, Rectangle rectangle) {
31453107
*/
31463108
public Rectangle map (Control from, Control to, int x, int y, int width, int height) {
31473109
checkDevice ();
3148-
if (isRescalingAtRuntime()) {
3149-
Rectangle mappedRectangleInPoints;
3150-
if (from == null) {
3151-
Rectangle mappedRectangleInPixels = mapInPixels(from, to, translateRectangleInPixelsInDisplayCoordinateSystem(x, y, width, height, to.getShell().getMonitor()));
3152-
mappedRectangleInPoints = DPIUtil.scaleDown(mappedRectangleInPixels, to.getZoom());
3153-
} else if (to == null) {
3154-
Rectangle mappedRectangleInPixels = mapInPixels(from, to, DPIUtil.scaleUp(new Rectangle(x, y, width, height), from.getZoom()));
3155-
mappedRectangleInPoints = translateRectangleInPointsInDisplayCoordinateSystem(mappedRectangleInPixels.x, mappedRectangleInPixels.y, mappedRectangleInPixels.width, mappedRectangleInPixels.height, from.getShell().getMonitor());
3156-
} else {
3157-
Rectangle mappedRectangleInPixels = mapInPixels(from, to, DPIUtil.scaleUp(new Rectangle(x, y, width, height), from.getZoom()));
3158-
mappedRectangleInPoints = DPIUtil.scaleDown(mappedRectangleInPixels, to.getZoom());
3159-
}
3160-
return mappedRectangleInPoints;
3161-
}
31623110
int zoom = getZoomLevelForMapping(from, to);
31633111
x = DPIUtil.scaleUp(x, zoom);
31643112
y = DPIUtil.scaleUp(y, zoom);
@@ -3182,57 +3130,6 @@ Rectangle mapInPixels (Control from, Control to, int x, int y, int width, int he
31823130
return new Rectangle (rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top);
31833131
}
31843132

3185-
Point translateLocationInPixelsInDisplayCoordinateSystem(int x, int y) {
3186-
Monitor monitor = getContainingMonitor(x, y);
3187-
return getPixelsFromPoint(monitor, x, y);
3188-
}
3189-
3190-
Point translateLocationInPointInDisplayCoordinateSystem(int x, int y) {
3191-
Monitor monitor = getContainingMonitorInPixelsCoordinate(x, y);
3192-
return getPointFromPixels(monitor, x, y);
3193-
}
3194-
3195-
Rectangle translateRectangleInPixelsInDisplayCoordinateSystemByContainment(int x, int y, int width, int height) {
3196-
Monitor monitorByLocation = getContainingMonitor(x, y);
3197-
Monitor monitorByContainment = getContainingMonitor(x, y, width, height);
3198-
return translateRectangleInPixelsInDisplayCoordinateSystem(x, y, width, height, monitorByLocation, monitorByContainment);
3199-
}
3200-
3201-
private Rectangle translateRectangleInPixelsInDisplayCoordinateSystem(int x, int y, int width, int height, Monitor monitor) {
3202-
return translateRectangleInPixelsInDisplayCoordinateSystem(x, y, width, height, monitor, monitor);
3203-
}
3204-
3205-
private Rectangle translateRectangleInPixelsInDisplayCoordinateSystem(int x, int y, int width, int height, Monitor monitorOfLocation, Monitor monitorOfArea) {
3206-
Point topLeft = getPixelsFromPoint(monitorOfLocation, x, y);
3207-
int zoom = getApplicableMonitorZoom(monitorOfArea);
3208-
int widthInPixels = DPIUtil.scaleUp(width, zoom);
3209-
int heightInPixels = DPIUtil.scaleUp(height, zoom);
3210-
return new Rectangle(topLeft.x, topLeft.y, widthInPixels, heightInPixels);
3211-
}
3212-
3213-
Rectangle translateRectangleInPointsInDisplayCoordinateSystemByContainment(int x, int y, int widthInPixels, int heightInPixels) {
3214-
Monitor monitorByLocation = getContainingMonitor(x, y);
3215-
Monitor monitorByContainment = getContainingMonitor(x, y, widthInPixels, heightInPixels);
3216-
return translateRectangleInPointsInDisplayCoordinateSystem(x, y, widthInPixels, heightInPixels, monitorByLocation, monitorByContainment);
3217-
}
3218-
3219-
private Rectangle translateRectangleInPointsInDisplayCoordinateSystem(int x, int y, int widthInPixels, int heightInPixels, Monitor monitor) {
3220-
return translateRectangleInPointsInDisplayCoordinateSystem(x, y, widthInPixels, heightInPixels, monitor, monitor);
3221-
}
3222-
3223-
3224-
private Rectangle translateRectangleInPointsInDisplayCoordinateSystem(int x, int y, int widthInPixels, int heightInPixels, Monitor monitorOfLocation, Monitor monitorOfArea) {
3225-
Point topLeft = getPointFromPixels(monitorOfLocation, x, y);
3226-
int zoom = getApplicableMonitorZoom(monitorOfArea);
3227-
int width = DPIUtil.scaleDown(widthInPixels, zoom);
3228-
int height = DPIUtil.scaleDown(heightInPixels, zoom);
3229-
return new Rectangle(topLeft.x, topLeft.y, width, height);
3230-
}
3231-
3232-
private int getApplicableMonitorZoom(Monitor monitor) {
3233-
return DPIUtil.getZoomForAutoscaleProperty(isRescalingAtRuntime() ? monitor.zoom : getDeviceZoom());
3234-
}
3235-
32363133
long messageProc (long hwnd, long msg, long wParam, long lParam) {
32373134
switch ((int)msg) {
32383135
case SWT_RUNASYNC: {
@@ -4458,12 +4355,7 @@ public void sendPostExternalEventDispatchEvent () {
44584355
*/
44594356
public void setCursorLocation (int x, int y) {
44604357
checkDevice ();
4461-
if (isRescalingAtRuntime()) {
4462-
Point cursorLocationInPixels = translateLocationInPixelsInDisplayCoordinateSystem(x, y);
4463-
setCursorLocationInPixels (cursorLocationInPixels.x, cursorLocationInPixels.y);
4464-
} else {
4465-
setCursorLocationInPixels (DPIUtil.autoScaleUp (x), DPIUtil.autoScaleUp (y));
4466-
}
4358+
setCursorLocationInPixels (DPIUtil.autoScaleUp (x), DPIUtil.autoScaleUp (y));
44674359
}
44684360

44694361
void setCursorLocationInPixels (int x, int y) {
@@ -5498,63 +5390,4 @@ private boolean setDPIAwareness(int desiredDpiAwareness) {
54985390
return true;
54995391
}
55005392

5501-
private Monitor getContainingMonitor(int x, int y) {
5502-
Monitor[] monitors = getMonitors();
5503-
for (Monitor currentMonitor : monitors) {
5504-
Rectangle clientArea = currentMonitor.getClientArea();
5505-
if (clientArea.contains(x, y)) {
5506-
return currentMonitor;
5507-
}
5508-
}
5509-
return getPrimaryMonitor();
5510-
}
5511-
5512-
private Monitor getContainingMonitor(int x, int y, int width, int height) {
5513-
Rectangle rectangle = new Rectangle(x, y, width, height);
5514-
Monitor[] monitors = getMonitors();
5515-
Monitor selectedMonitor = getPrimaryMonitor();
5516-
int highestArea = 0;
5517-
for (Monitor currentMonitor : monitors) {
5518-
Rectangle clientArea = currentMonitor.getClientArea();
5519-
Rectangle intersection = clientArea.intersection(rectangle);
5520-
int area = intersection.width * intersection.height;
5521-
if (area > highestArea) {
5522-
selectedMonitor = currentMonitor;
5523-
highestArea = area;
5524-
}
5525-
}
5526-
return selectedMonitor;
5527-
}
5528-
5529-
private Monitor getContainingMonitorInPixelsCoordinate(int xInPixels, int yInPixels) {
5530-
Monitor[] monitors = getMonitors();
5531-
for (Monitor current : monitors) {
5532-
Rectangle clientArea = getMonitorClientAreaInPixels(current);
5533-
if (clientArea.contains(xInPixels, yInPixels)) {
5534-
return current;
5535-
}
5536-
}
5537-
return getPrimaryMonitor();
5538-
}
5539-
5540-
private Rectangle getMonitorClientAreaInPixels(Monitor monitor) {
5541-
int zoom = getApplicableMonitorZoom(monitor);
5542-
int widthInPixels = DPIUtil.scaleUp(monitor.clientWidth, zoom);
5543-
int heightInPixels = DPIUtil.scaleUp(monitor.clientHeight, zoom);
5544-
return new Rectangle(monitor.clientX, monitor.clientY, widthInPixels, heightInPixels);
5545-
}
5546-
5547-
private Point getPixelsFromPoint(Monitor monitor, int x, int y) {
5548-
int zoom = getApplicableMonitorZoom(monitor);
5549-
int mappedX = DPIUtil.scaleUp(x - monitor.clientX, zoom) + monitor.clientX;
5550-
int mappedY = DPIUtil.scaleUp(y - monitor.clientY, zoom) + monitor.clientY;
5551-
return new Point(mappedX, mappedY);
5552-
}
5553-
5554-
private Point getPointFromPixels(Monitor monitor, int x, int y) {
5555-
int zoom = getApplicableMonitorZoom(monitor);
5556-
int mappedX = DPIUtil.scaleDown(x - monitor.clientX, zoom) + monitor.clientX;
5557-
int mappedY = DPIUtil.scaleDown(y - monitor.clientY, zoom) + monitor.clientY;
5558-
return new Point(mappedX, mappedY);
5559-
}
55605393
}

bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1566,56 +1566,6 @@ public void setAlpha (int alpha) {
15661566
}
15671567
}
15681568

1569-
@Override
1570-
public Rectangle getBounds() {
1571-
if (getDisplay().isRescalingAtRuntime()) {
1572-
Rectangle boundsInPixels = getBoundsInPixels();
1573-
return display.translateRectangleInPointsInDisplayCoordinateSystemByContainment(boundsInPixels.x, boundsInPixels.y, boundsInPixels.width, boundsInPixels.height);
1574-
}
1575-
return super.getBounds();
1576-
}
1577-
1578-
@Override
1579-
public Point getLocation() {
1580-
if (getDisplay().isRescalingAtRuntime()) {
1581-
Point locationInPixels = getLocationInPixels();
1582-
return display.translateLocationInPointInDisplayCoordinateSystem(locationInPixels.x, locationInPixels.y);
1583-
}
1584-
return super.getLocation();
1585-
}
1586-
1587-
@Override
1588-
public void setLocation(Point location) {
1589-
if (location == null) error (SWT.ERROR_NULL_ARGUMENT);
1590-
setLocation(location.x, location.y);
1591-
}
1592-
1593-
@Override
1594-
public void setLocation(int x, int y) {
1595-
if (getDisplay().isRescalingAtRuntime()) {
1596-
Point location = display.translateLocationInPixelsInDisplayCoordinateSystem(x, y);
1597-
setLocationInPixels(location.x, location.y);
1598-
} else {
1599-
super.setLocation(x, y);
1600-
}
1601-
}
1602-
1603-
@Override
1604-
public void setBounds(Rectangle rect) {
1605-
if (rect == null) error (SWT.ERROR_NULL_ARGUMENT);
1606-
setBounds(rect.x, rect.y, rect.width, rect.height);
1607-
}
1608-
1609-
@Override
1610-
public void setBounds(int x, int y, int width, int height) {
1611-
if (getDisplay().isRescalingAtRuntime()) {
1612-
Rectangle boundsInPixels = display.translateRectangleInPixelsInDisplayCoordinateSystemByContainment(x, y, width, height);
1613-
setBoundsInPixels(boundsInPixels.x, boundsInPixels.y, boundsInPixels.width, boundsInPixels.height);
1614-
} else {
1615-
super.setBounds(x, y, width, height);
1616-
}
1617-
}
1618-
16191569
@Override
16201570
void setBoundsInPixels (int x, int y, int width, int height, int flags, boolean defer) {
16211571
if (fullScreen) setFullScreen (false);

0 commit comments

Comments
 (0)