Skip to content

Commit 94fe4e0

Browse files
Fix code mining tests on windows if native zoom has value not equal 100
1 parent 2d4334f commit 94fe4e0

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

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

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -564,14 +564,17 @@ private static boolean hasCodeMiningPrintedBelowLine(ITextViewer viewer, int lin
564564
starty= lineBounds.y;
565565
}
566566

567-
Image image= new Image(widget.getDisplay(), (gc, width, height) -> {}, widget.getSize().x, widget.getSize().y);
567+
Image image= new Image(widget.getDisplay(), (gc, width, height) -> {
568+
}, (widget.getSize().x), (widget.getSize().y));
568569
try {
569570
GC gc= new GC(widget);
570571
gc.copyArea(image, 0, 0);
571572
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++) {
573+
int zoom= widget.getShell().nativeZoom;
574+
ImageData imageData= image.getImageData(zoom);
575+
double zoomFactor= zoom / 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,20 @@ 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+
int zoom= widget.getShell().nativeZoom;
617+
ImageData imageData= image.getImageData(zoom);
618+
612619
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++) {
620+
621+
double zoomFactor= zoom / 100.0;
622+
for (int x= (int) (zoomFactor * (secondLineBounds.x + 1)); x < image.getBounds().width && x < imageData.width; x++) {
623+
for (int y= (int) (zoomFactor * (secondLineBounds.y)); y < zoomFactor * (secondLineBounds.y + secondLineBounds.height) && y < imageData.height; y++) {
615624
if (!imageData.palette.getRGB(imageData.getPixel(x, y)).equals(widget.getBackground().getRGB())) {
616625
// code mining printed
617626
image.dispose();

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,20 +134,25 @@ protected boolean condition() {
134134
}.waitForCondition(textWidget.getDisplay(), 2000));
135135
DisplayHelper.sleep(textWidget.getDisplay(), 1000);
136136
Rectangle textBounds= textWidget.getTextBounds(0, textWidget.getText().length() - 1);
137-
int supposedMostRightPaintedPixel = textBounds.x + textBounds.width - 1;
137+
int zoom= textWidget.getShell().nativeZoom;
138+
double zoomFactor= zoom / 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+
int zoom= widget.getShell().nativeZoom;
152+
ImageData imageData= image.getImageData(zoom);
153+
double zoomFactor= zoom / 100.0;
149154
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++) {
155+
for (int y= (int) (3 * zoomFactor) /* magic number as well to avoid title bar */; y < imageData.height - (3 * zoomFactor); y++) {
151156
if (!imageData.palette.getRGB(imageData.getPixel(x, y)).equals(backgroundRgb)) {
152157
image.dispose();
153158
return x;

0 commit comments

Comments
 (0)