Skip to content

Commit b6e5d28

Browse files
tobias-melcherBeckerWdf
authored andcommitted
add test verticalIndent_resetsCacheForAllLinesAssumingLowestLineHeight
1 parent 35119f0 commit b6e5d28

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

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

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4692,6 +4692,48 @@ 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, 5 * text.getLineHeight());
4716+
while (Display.getDefault().readAndDispatch()) {
4717+
}
4718+
for (int i = 1; i >= 0; i--) {
4719+
int lineNr = bottomIndex - i;
4720+
text.setLineVerticalIndent(lineNr, 2 * text.getLineHeight());
4721+
}
4722+
for (int i = 1; i >= 0; i--) {
4723+
int lineNr = bottomIndex - i;
4724+
var field = StyledText.class.getDeclaredField("renderer");
4725+
field.setAccessible(true);
4726+
Object renderer = field.get(text);
4727+
m = renderer.getClass().getDeclaredMethod("getLineSize", int.class);
4728+
m.setAccessible(true);
4729+
Object lineSize = m.invoke(renderer, lineNr);
4730+
field = lineSize.getClass().getDeclaredField("height");
4731+
field.setAccessible(true);
4732+
int height = (int) field.get(lineSize);
4733+
assertEquals("resetCache is not called for line "+lineNr+" after setLineVerticalIndent",-1, height);
4734+
}
4735+
}
4736+
46954737
@Test
46964738
public void test_verticalIndent_keepsCurrentCaretAndLinePosition() {
46974739
text.dispose();

0 commit comments

Comments
 (0)