diff options
author | Markus Keller | 2017-05-08 16:37:13 +0000 |
---|---|---|
committer | Thomas Wolf | 2017-05-09 10:59:22 +0000 |
commit | df0fceac139af2e0bc4c2703d923284466c6cb76 (patch) | |
tree | cc018841eb605f8bb29e8ef277753d655873b938 | |
parent | 936932bd4c1e4e91dd9d23c64d585115b83fb20d (diff) | |
download | egit-df0fceac139af2e0bc4c2703d923284466c6cb76.tar.gz egit-df0fceac139af2e0bc4c2703d923284466c6cb76.tar.xz egit-df0fceac139af2e0bc4c2703d923284466c6cb76.zip |
Workaround for HiDPI line number rulers on macOS retina
Oxygen (platform.text 3.12) introduces a work-around for blurry line
numbers in rulers on Retina displays. Basically GC drawing must scale
according to the zoom factor. C.f. bug 516293.
Bug: 516322
Change-Id: I6978a80e912b64323e1bc7ee7ad0e461ca8723c8
Signed-off-by: Markus Keller <markus_keller@ch.ibm.com>
2 files changed, 32 insertions, 1 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/LogicalLineNumberRulerColumn.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/LogicalLineNumberRulerColumn.java index deccdfafdd..68266c320a 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/LogicalLineNumberRulerColumn.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/LogicalLineNumberRulerColumn.java @@ -25,6 +25,13 @@ public class LogicalLineNumberRulerColumn extends LineNumberRulerColumn { private final @NonNull DiffEntry.Side side; /** + * Zoom level for workaround for HiDPI line number rulers on macOS retina. + * + * @see <a href="https://bugs.eclipse.org/516322">Bug 516322</a> + */ + int zoom = 100; + + /** * @param side */ public LogicalLineNumberRulerColumn(@NonNull DiffEntry.Side side) { @@ -69,4 +76,27 @@ public class LogicalLineNumberRulerColumn extends LineNumberRulerColumn { } return digits; } + + /** + * Enable workaround for HiDPI line number rulers on macOS retina. This + * method will override an internal method in Oxygen (4.7). + * + * @return true + * @see <a href="https://bugs.eclipse.org/516322">Bug 516322</a> + */ + protected boolean internalSupportsZoomedPaint() { + return true; + } + + /** + * Store zoom level for workaround for HiDPI line number rulers on macOS + * retina. This method will override an internal method in Oxygen (4.7). + * + * @param zoomLevel + * the zoom level to use for drawing operations + * @see <a href="https://bugs.eclipse.org/516322">Bug 516322</a> + */ + protected void internalSetZoom(int zoomLevel) { + this.zoom = zoomLevel; + } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/OldNewLogicalLineNumberRulerColumn.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/OldNewLogicalLineNumberRulerColumn.java index dc56fd12e5..6b57391461 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/OldNewLogicalLineNumberRulerColumn.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/OldNewLogicalLineNumberRulerColumn.java @@ -105,7 +105,8 @@ public class OldNewLogicalLineNumberRulerColumn extends LineNumberRulerColumn { // drawn. Rectangle bounds = super.getControl().getBounds(); gc.setForeground(lineColor); - gc.drawLine(x, 0, x, bounds.height); + gc.drawLine(x * zoom / 100, 0, x * zoom / 100, + bounds.height * zoom / 100); gc.setForeground(foreground); } |