Skip to content

Commit 60e3195

Browse files
Fix code mining tests on windows if native zoom has value 200
1 parent 71f4d11 commit 60e3195

File tree

2 files changed

+24
-12
lines changed

2 files changed

+24
-12
lines changed

tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/codemining/CodeMiningTest.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.eclipse.swt.graphics.ImageData;
4141
import org.eclipse.swt.graphics.Point;
4242
import org.eclipse.swt.graphics.Rectangle;
43+
import org.eclipse.swt.internal.DPIUtil;
4344
import org.eclipse.swt.layout.FillLayout;
4445
import org.eclipse.swt.widgets.Display;
4546
import org.eclipse.swt.widgets.Shell;
@@ -564,14 +565,16 @@ private static boolean hasCodeMiningPrintedBelowLine(ITextViewer viewer, int lin
564565
starty= lineBounds.y;
565566
}
566567

567-
Image image= new Image(widget.getDisplay(), (gc, width, height) -> {}, widget.getSize().x, widget.getSize().y);
568+
Image image= new Image(widget.getDisplay(), (gc, width, height) -> {
569+
}, (widget.getSize().x), (widget.getSize().y));
568570
try {
569571
GC gc= new GC(widget);
570572
gc.copyArea(image, 0, 0);
571573
gc.dispose();
572-
ImageData imageData= image.getImageData();
573-
for (int x= startx + 1; x < image.getBounds().width && x < imageData.width; x++) {
574-
for (int y= starty; y < imageData.height - 10 /*do not include the border*/; y++) {
574+
ImageData imageData= image.getImageData(DPIUtil.getDeviceZoom());
575+
double zoomFactor= DPIUtil.getDeviceZoom() / 100.0;
576+
for (int x= (int) (zoomFactor * startx + 1); x < image.getBounds().width && x < imageData.width; x++) {
577+
for (int y= (int) (zoomFactor * starty); y < imageData.height - 10 /*do not include the border*/; y++) {
575578
if (!imageData.palette.getRGB(imageData.getPixel(x, y)).equals(widget.getBackground().getRGB())) {
576579
// code mining printed
577580
return true;
@@ -604,14 +607,19 @@ private static boolean hasCodeMiningPrintedAfterTextOnLine(ITextViewer viewer, i
604607
} else {
605608
secondLineBounds= widget.getTextBounds(lineOffset, lineOffset + lineLength);
606609
}
607-
Image image = new Image(widget.getDisplay(), (gc, width, height) -> {}, widget.getSize().x, widget.getSize().y);
610+
611+
Image image= new Image(widget.getDisplay(), (gc, width, height) -> {
612+
}, (widget.getSize().x), (widget.getSize().y));
608613
GC gc = new GC(widget);
609614
gc.copyArea(image, 0, 0);
610615
gc.dispose();
611-
ImageData imageData = image.getImageData();
616+
ImageData imageData= image.getImageData(DPIUtil.getDeviceZoom());
617+
612618
secondLineBounds.x += secondLineBounds.width; // look only area after text
613-
for (int x = secondLineBounds.x + 1; x < image.getBounds().width && x < imageData.width; x++) {
614-
for (int y = secondLineBounds.y; y < secondLineBounds.y + secondLineBounds.height && y < imageData.height; y++) {
619+
620+
double zoomFactor= DPIUtil.getDeviceZoom() / 100.0;
621+
for (int x= (int) (zoomFactor * (secondLineBounds.x + 1)); x < image.getBounds().width && x < imageData.width; x++) {
622+
for (int y= (int) (zoomFactor * (secondLineBounds.y)); y < zoomFactor * (secondLineBounds.y + secondLineBounds.height) && y < imageData.height; y++) {
615623
if (!imageData.palette.getRGB(imageData.getPixel(x, y)).equals(widget.getBackground().getRGB())) {
616624
// code mining printed
617625
image.dispose();

tests/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/source/inlined/LineContentBoundsDrawingTest.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.eclipse.swt.graphics.ImageData;
2626
import org.eclipse.swt.graphics.RGB;
2727
import org.eclipse.swt.graphics.Rectangle;
28+
import org.eclipse.swt.internal.DPIUtil;
2829
import org.eclipse.swt.layout.FillLayout;
2930
import org.eclipse.swt.widgets.Shell;
3031

@@ -134,20 +135,23 @@ protected boolean condition() {
134135
}.waitForCondition(textWidget.getDisplay(), 2000));
135136
DisplayHelper.sleep(textWidget.getDisplay(), 1000);
136137
Rectangle textBounds= textWidget.getTextBounds(0, textWidget.getText().length() - 1);
137-
int supposedMostRightPaintedPixel = textBounds.x + textBounds.width - 1;
138+
double zoomFactor= DPIUtil.getDeviceZoom() / 100.0;
139+
int supposedMostRightPaintedPixel= (int) (zoomFactor * (textBounds.x + textBounds.width - 1));
138140
int mostRightPaintedPixel= getMostRightPaintedPixel(textWidget);
139141
Assertions.assertEquals(supposedMostRightPaintedPixel, mostRightPaintedPixel, 1.5); // use double comparison with delta to tolerate variation from a system to the other
140142
}
141143

142144
public int getMostRightPaintedPixel(StyledText widget) {
143-
Image image = new Image(widget.getDisplay(), (gc, width, height) -> {}, widget.getSize().x, widget.getSize().y);
145+
Image image= new Image(widget.getDisplay(), (gc, width, height) -> {
146+
}, (widget.getSize().x), (widget.getSize().y));
144147
GC gc = new GC(widget);
145148
gc.copyArea(image, 0, 0);
146149
gc.dispose();
147150
RGB backgroundRgb = widget.getBackground().getRGB();
148-
ImageData imageData = image.getImageData();
151+
ImageData imageData= image.getImageData(DPIUtil.getDeviceZoom());
152+
double zoomFactor= DPIUtil.getDeviceZoom() / 100.0;
149153
for (int x = imageData.width - 50 /* magic number to avoid rulers and other */; x >= 0; x--) {
150-
for (int y = 3 /* magic number as well to avoid title bar */; y < imageData.height - 3; y++) {
154+
for (int y= (int) (3 * zoomFactor) /* magic number as well to avoid title bar */; y < imageData.height - (3 * zoomFactor); y++) {
151155
if (!imageData.palette.getRGB(imageData.getPixel(x, y)).equals(backgroundRgb)) {
152156
image.dispose();
153157
return x;

0 commit comments

Comments
 (0)