Skip to content

Commit f642464

Browse files
committed
[win32] different coordinate system strategies
This contributes extracts two different strategies to provide a consistent coordinate system in the win32 implemenentation for a single-zoom and a multi-zoom environment. The existing logic remains unchanged in this commit. It is only moved and consolidated in the new inner classes in Display Contributes to #62 and #131
1 parent cfa74b4 commit f642464

File tree

5 files changed

+299
-186
lines changed

5 files changed

+299
-186
lines changed

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

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3970,12 +3970,9 @@ void subclass () {
39703970
public Point toControl (int x, int y) {
39713971
checkWidget ();
39723972
int zoom = getZoom();
3973-
if (getDisplay().isRescalingAtRuntime()) {
3974-
Point displayPointInPixels = getDisplay().translateLocationInPixelsInDisplayCoordinateSystem(x, y);
3975-
final Point controlPointInPixels = toControlInPixels(displayPointInPixels.x, displayPointInPixels.y);
3976-
return DPIUtil.scaleDown(controlPointInPixels, zoom);
3977-
}
3978-
return DPIUtil.scaleDown(toControlInPixels(DPIUtil.scaleUp(x, zoom), DPIUtil.scaleUp(y, zoom)), zoom);
3973+
Point displayPointInPixels = getDisplay().translateToDisplayCoordinates(new Point(x, y), zoom);
3974+
final Point controlPointInPixels = toControlInPixels(displayPointInPixels.x, displayPointInPixels.y);
3975+
return DPIUtil.scaleDown(controlPointInPixels, zoom);
39793976
}
39803977

39813978
Point toControlInPixels (int x, int y) {
@@ -4034,11 +4031,8 @@ public Point toControl (Point point) {
40344031
public Point toDisplay (int x, int y) {
40354032
checkWidget ();
40364033
int zoom = getZoom();
4037-
if (getDisplay().isRescalingAtRuntime()) {
4038-
Point displayPointInPixels = toDisplayInPixels(DPIUtil.scaleUp(x, zoom), DPIUtil.scaleUp(y, zoom));
4039-
return getDisplay().translateLocationInPointInDisplayCoordinateSystem(displayPointInPixels.x, displayPointInPixels.y);
4040-
}
4041-
return DPIUtil.scaleDown(toDisplayInPixels(DPIUtil.scaleUp(x, zoom), DPIUtil.scaleUp(y, zoom)), zoom);
4034+
Point displayPointInPixels = toDisplayInPixels(DPIUtil.scaleUp(x, zoom), DPIUtil.scaleUp(y, zoom));
4035+
return getDisplay().translateFromDisplayCoordinates(displayPointInPixels, zoom);
40424036
}
40434037

40444038
Point toDisplayInPixels (int x, int y) {

0 commit comments

Comments
 (0)