diff --git a/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF b/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF index a5507fd35c1..d1429ea7467 100644 --- a/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.jface.text -Bundle-Version: 3.28.100.qualifier +Bundle-Version: 3.28.0.qualifier Bundle-Vendor: %providerName Bundle-Localization: plugin Export-Package: diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/JFaceTextUtil.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/JFaceTextUtil.java index 2421c354d83..62caf8946f8 100644 --- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/JFaceTextUtil.java +++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/JFaceTextUtil.java @@ -18,6 +18,7 @@ import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.internal.DPIUtil; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; @@ -82,6 +83,15 @@ public static int computeLineHeight(StyledText textWidget, int startLine, int en return getLinePixel(textWidget, endLine) - getLinePixel(textWidget, startLine); } + /** + * @since 3.28 + */ + public static float computeLineHeightFloat(StyledText textWidget, int startLine, int endLine, int lineCount) { + int lh= computeLineHeight(textWidget, startLine, endLine, lineCount); + int zoom= DPIUtil.getZoomForAutoscaleProperty(textWidget.nativeZoom); + return DPIUtil.scaleDown((float) DPIUtil.scaleUp(lh, zoom), zoom); + } + /** * Returns the last fully visible line of the widget. The exact semantics of "last fully visible * line" are: @@ -288,6 +298,13 @@ public static int getLinePixel(StyledText textWidget, int line) { return textWidget.getLinePixel(line); } + /** + * @since 3.28 + */ + public static float getLinePixelFloat(StyledText textWidget, int line) { + return textWidget.getLinePixelFloat(line); + } + /* * @see StyledText#getLineIndex(int) */ diff --git a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java index 4ddb7a353da..52f15a53611 100644 --- a/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java +++ b/bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java @@ -844,7 +844,7 @@ void doPaint(GC gc, ILineRange visibleLines) { Display display= fCachedTextWidget.getDisplay(); int firstWidgetLineToDraw= JFaceTextUtil.modelLineToWidgetLine(fCachedTextViewer, visibleLines.getStartLine()); - int y= fCachedTextWidget.getLinePixel(firstWidgetLineToDraw); + float y= fCachedTextWidget.getLinePixelFloat(firstWidgetLineToDraw); // add empty lines if line is wrapped boolean isWrapActive= fCachedTextWidget.getWordWrap(); @@ -856,7 +856,7 @@ void doPaint(GC gc, ILineRange visibleLines) { continue; final int offsetAtLine= fCachedTextWidget.getOffsetAtLine(widgetLine); - int lineHeight = JFaceTextUtil.computeLineHeight(fCachedTextWidget, widgetLine, widgetLine + 1, 1); + float lineHeight= JFaceTextUtil.computeLineHeightFloat(fCachedTextWidget, widgetLine, widgetLine + 1, 1); paintLine(line, y, lineHeight, gc, display); // increment y position @@ -936,7 +936,7 @@ private int getBaselineBias(GC gc, int widgetLine) { * @param display the display the drawing occurs on * @since 3.0 */ - protected void paintLine(int line, int y, int lineheight, GC gc, Display display) { + protected void paintLine(int line, float y, float lineheight, GC gc, Display display) { int widgetLine= JFaceTextUtil.modelLineToWidgetLine(fCachedTextViewer, line); String s= createDisplayString(line); @@ -948,7 +948,7 @@ protected void paintLine(int line, int y, int lineheight, GC gc, Display display int indentation= fIndentation[index]; int baselineBias= getBaselineBias(gc, widgetLine); int verticalIndent= fCachedTextViewer.getTextWidget().getLineVerticalIndent(widgetLine); - gc.drawString(s, indentation, y + baselineBias + verticalIndent, true); + gc.drawString(s, new Point.OfFloat(indentation, y + baselineBias + verticalIndent), true); } /**