Skip to content

Commit 92e290e

Browse files
Christopher-Hermanniloveeclipse
authored andcommitted
[StickyScrolling] Avoid out of bound error when styling sticky lines
Fixes #2750
1 parent 1042a13 commit 92e290e

File tree

2 files changed

+17
-0
lines changed
  • bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll
  • tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll

2 files changed

+17
-0
lines changed

bundles/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyLine.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ public String getText() {
5353
@Override
5454
public StyleRange[] getStyleRanges() {
5555
StyledText textWidget= sourceViewer.getTextWidget();
56+
int widgetLineNumber = getWidgetLineNumber();
57+
58+
if (widgetLineNumber > textWidget.getLineCount()) {
59+
return null;
60+
}
61+
5662
int offsetAtLine= textWidget.getOffsetAtLine(getWidgetLineNumber());
5763
StyleRange[] styleRanges= textWidget.getStyleRanges(offsetAtLine, getText().length());
5864
for (StyleRange styleRange : styleRanges) {

tests/org.eclipse.ui.editors.tests/src/org/eclipse/ui/internal/texteditor/stickyscroll/StickyLineTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
package org.eclipse.ui.internal.texteditor.stickyscroll;
1515

1616
import static org.junit.Assert.assertEquals;
17+
import static org.junit.Assert.assertNull;
1718

1819
import org.junit.After;
1920
import org.junit.Before;
@@ -94,6 +95,16 @@ public void testGetStyleRanges() {
9495
assertEquals(2, styleRanges[1].length);
9596
}
9697

98+
@Test
99+
public void testGetStyleRangesIgnoresOutOfBoundLines() {
100+
textWidget.setText("line1\nline2\nline3");
101+
102+
StickyLine stickyLineOutOfBound = new StickyLine(10, sourceViewer);
103+
StyleRange[] styleRanges = stickyLineOutOfBound.getStyleRanges();
104+
105+
assertNull(styleRanges);
106+
}
107+
97108
@Test
98109
public void WithSourceViewerLineMapping() {
99110
sourceViewer = new SourceViewerWithLineMapping(shell, null, SWT.None);

0 commit comments

Comments
 (0)