Skip to content

Commit eabe689

Browse files
ShahzaibIbrahimHeikoKlare
authored andcommitted
Fix LineNumberRuler glitch from incorrect listener order on zoom
This change ensures that zoom change events occur *after* all the listeners have been executed in LineNumberRuler. Previously, zoom changes triggered buffer image invalidation prematurely, leading to multiple redundant resize events. This caused incorrect top pixel calculations when the scrollbar was adjusted after zoom, resulting in rendering glitches during redraws of line numbers. By deferring the SWT.ZoomChanged event until all the listeners have completed, we avoid early image invalidation. Now, the redraw uses a correctly invalidated buffer image, and top pixel calculations are accurate, eliminating rendering artifacts. Tested by simulating zoom changes and full scroll-down scenarios—line number ruler now renders consistently without glitches.
1 parent 9360b5c commit eabe689

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -618,11 +618,13 @@ public void addMouseListener(MouseListener listener) {
618618
});
619619

620620
fCanvas.addListener(SWT.ZoomChanged, e -> {
621-
computeIndentations();
622-
if (fBuffer != null) {
623-
fBuffer.dispose();
624-
fBuffer= null;
625-
}
621+
Display.getDefault().asyncExec(() -> {
622+
computeIndentations();
623+
if (fBuffer != null) {
624+
fBuffer.dispose();
625+
fBuffer= null;
626+
}
627+
});
626628
});
627629

628630
fMouseHandler= new MouseHandler();

0 commit comments

Comments
 (0)