Skip to content

Commit 9e37916

Browse files
add test verticalIndent_resetsCacheForAllLinesAssumingLowestLineHeight
1 parent a479377 commit 9e37916

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4692,6 +4692,50 @@ public void test_verticalIndent_changeRelativeBounds() {
46924692
assertEquals(0, text.getTopPixel());
46934693
}
46944694

4695+
/**
4696+
* test fix for eclipse-platform/eclipse.platform.swt#2512
4697+
*/
4698+
@Test
4699+
public void test_verticalIndent_resetsCacheForAllLinesAssumingLowestLineHeight() throws Exception {
4700+
text.dispose();
4701+
text = new StyledText(shell, SWT.V_SCROLL);
4702+
setWidget(text);
4703+
shell.setVisible(true);
4704+
var str = new StringBuilder();
4705+
for (int i = 0; i < 200; i++) {
4706+
str.append("line ").append(i).append("\n");
4707+
}
4708+
text.setText(str.toString());
4709+
text.setSize(500, 200);
4710+
4711+
var m = StyledText.class.getDeclaredMethod("getPartialBottomIndex");
4712+
m.setAccessible(true);
4713+
int bottomIndex = (int) m.invoke(text);
4714+
4715+
text.setLineVerticalIndent(1, 60);
4716+
while (Display.getDefault().readAndDispatch()) {
4717+
}
4718+
4719+
for (int i = 3; i >= 0; i--) {
4720+
int lineNr = bottomIndex - i;
4721+
text.setLineVerticalIndent(lineNr, 20);
4722+
}
4723+
4724+
for (int i = 3; i >= 0; i--) {
4725+
int lineNr = bottomIndex - i;
4726+
var field = text.getClass().getDeclaredField("renderer");
4727+
field.setAccessible(true);
4728+
Object renderer = field.get(text);
4729+
m = renderer.getClass().getDeclaredMethod("getLineSize", int.class);
4730+
m.setAccessible(true);
4731+
Object lineSize = m.invoke(renderer, lineNr);
4732+
field = lineSize.getClass().getDeclaredField("height");
4733+
field.setAccessible(true);
4734+
int height = (int) field.get(lineSize);
4735+
assertEquals("resetCache is not called for line "+lineNr+" after setLineVerticalIndent",-1, height);
4736+
}
4737+
}
4738+
46954739
@Test
46964740
public void test_verticalIndent_keepsCurrentCaretAndLinePosition() {
46974741
text.dispose();

0 commit comments

Comments
 (0)