diff options
author | Mickael Istria | 2018-03-09 12:53:45 +0000 |
---|---|---|
committer | Mickael Istria | 2018-03-14 16:47:32 +0000 |
commit | f932658f1aa0e319f7412704101e9d15b037eab6 (patch) | |
tree | c9faf5fe5d0e3c4a6132d552d8aa7960004e4b76 /tests | |
parent | 712b897f6cb221dc13a1d9e71ff0fedae4f7fdf1 (diff) | |
download | eclipse.platform.swt-f932658f1aa0e319f7412704101e9d15b037eab6.tar.gz eclipse.platform.swt-f932658f1aa0e319f7412704101e9d15b037eab6.tar.xz eclipse.platform.swt-f932658f1aa0e319f7412704101e9d15b037eab6.zip |
Bug 532173 - [StyledText] Wrong caret bounds with variable height
Fix bug in getBoundsAtOffset to make it more reliable.
Place caret to better location when it doesn't fit the whole line.
May as well fix bug 118612
Change-Id: I381dcc9039dae62dfddbd069487f7ecec85057c4
Signed-off-by: Mickael Istria <mistria@redhat.com>
Also-By: Angelo Zerr <angelozerr@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java index c5fceeec25..7ed2c0c66c 100644 --- a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java +++ b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java @@ -48,6 +48,7 @@ import org.eclipse.swt.events.VerifyListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.GlyphMetrics; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.graphics.Rectangle; @@ -4887,6 +4888,44 @@ public void test_clickUpdatesCaretPosition() { } @Test +public void test_caretSizeAndPositionVariableGlyphMetrics() { + text.setText("abcd"); + text.setMargins(2, 0, 0, 0); // keep leftMargin as it affects behavior + text.setLineSpacing(0); + StyleRange range = new StyleRange(2, 1, null, null); + range.metrics = new GlyphMetrics(100, 0, 10); + text.setStyleRange(range); + text.setCaretOffset(0); + assertEquals(text.getLineHeight(), text.getCaret().getSize().y); + // +5: caret takes 5 more pixels + assertEquals(text.getLineHeight(0) - text.getCaret().getSize().y, text.getCaret().getBounds().y); + text.setCaretOffset(1); + assertEquals(text.getLineHeight(), text.getCaret().getSize().y); + assertEquals(text.getLineHeight(0) - text.getCaret().getSize().y, text.getCaret().getBounds().y); + text.setCaretOffset(2); + assertEquals(text.getLineHeight(0), text.getCaret().getSize().y); + assertEquals(0, text.getCaret().getBounds().y); + text.setCaretOffset(3); + assertEquals(text.getLineHeight(), text.getCaret().getSize().y); + assertEquals(text.getLineHeight(0) - text.getCaret().getSize().y, text.getCaret().getBounds().y); + text.setCaretOffset(4); + assertEquals(text.getLineHeight(), text.getCaret().getSize().y); + assertEquals(text.getLineHeight(0) - text.getCaret().getSize().y, text.getCaret().getBounds().y); + text.setCaretOffset(3); + assertEquals(text.getLineHeight(), text.getCaret().getSize().y); + assertEquals(text.getLineHeight(0) - text.getCaret().getSize().y, text.getCaret().getBounds().y); + text.setCaretOffset(2); + assertEquals(text.getLineHeight(0), text.getCaret().getSize().y); + assertEquals(0, text.getCaret().getBounds().y); + text.setCaretOffset(1); + assertEquals(text.getLineHeight(), text.getCaret().getSize().y); + assertEquals(text.getLineHeight(0) - text.getCaret().getSize().y, text.getCaret().getBounds().y); + text.setCaretOffset(0); + assertEquals(text.getLineHeight(), text.getCaret().getSize().y); + assertEquals(text.getLineHeight(0) - text.getCaret().getSize().y, text.getCaret().getBounds().y); +} + +@Test public void test_doubleClickSelectsWord() { text.setText("Test1 Test2"); |