Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Keller2017-05-08 16:37:13 +0000
committerThomas Wolf2017-05-09 10:59:22 +0000
commitdf0fceac139af2e0bc4c2703d923284466c6cb76 (patch)
treecc018841eb605f8bb29e8ef277753d655873b938
parent936932bd4c1e4e91dd9d23c64d585115b83fb20d (diff)
downloadegit-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>
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/LogicalLineNumberRulerColumn.java30
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/OldNewLogicalLineNumberRulerColumn.java3
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);
}

Back to the top