Skip to content

Commit 2014f89

Browse files
committed
Temporary workaround for LineNumberRulerColumn regression on Linux/MacOS
This temporarily reverts the image creation for the LineNumberRulerColumn on Linux and MacOS to the state before a recent regression.
1 parent 1e3db4a commit 2014f89

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

bundles/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java

+17-12
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
import org.eclipse.swt.widgets.Control;
4343
import org.eclipse.swt.widgets.Display;
4444

45+
import org.eclipse.core.runtime.Platform.OS;
46+
4547
import org.eclipse.jface.text.BadLocationException;
4648
import org.eclipse.jface.text.IDocument;
4749
import org.eclipse.jface.text.IRegion;
@@ -687,24 +689,27 @@ private void doubleBufferPaint(GC dest) {
687689
}
688690

689691
if (fBuffer == null) {
690-
fBuffer= newFullBufferImage(size);
692+
newFullBufferImage(size);
691693
} else {
692694
doPaint(visibleLines, size);
693695
}
694696
dest.drawImage(fBuffer, 0, 0);
695697
}
696698

697-
private Image newFullBufferImage(Point size) {
698-
ImageGcDrawer imageGcDrawer= (gc, imageWidth, imageHeight) -> {
699-
ILineRange lines= JFaceTextUtil.getVisibleModelLines(fCachedTextViewer);
700-
if (lines == null) {
701-
return;
702-
}
703-
// We redraw everything; paint directly into the buffer
704-
initializeGC(gc, 0, 0, imageWidth, imageHeight);
705-
doPaint(gc, lines);
706-
};
707-
return new Image(fCanvas.getDisplay(), imageGcDrawer, size.x, size.y);
699+
private void newFullBufferImage(Point size) {
700+
if (OS.isWindows()) {
701+
ImageGcDrawer imageGcDrawer= (gc, imageWidth, imageHeight) -> {
702+
ILineRange lines= JFaceTextUtil.getVisibleModelLines(fCachedTextViewer);
703+
// We redraw everything; paint directly into the buffer
704+
initializeGC(gc, 0, 0, imageWidth, imageHeight);
705+
doPaint(gc, lines);
706+
};
707+
fBuffer= new Image(fCanvas.getDisplay(), imageGcDrawer, size.x, size.y);
708+
} else {
709+
fBuffer= new Image(fCanvas.getDisplay(), size.x, size.y);
710+
ILineRange visibleLines= JFaceTextUtil.getVisibleModelLines(fCachedTextViewer);
711+
doPaint(visibleLines, size);
712+
}
708713
}
709714

710715
private void doPaint(ILineRange visibleLines, Point size) {

0 commit comments

Comments
 (0)