Skip to content

Commit e688763

Browse files
committed
Bug 576052 - Cursor jumps to 1st column on arrow down in code block
Change-Id: I8efbc2b98a80a84e9c02044c737ce5d9d39e734c Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.swt/+/185579 Tested-by: Platform Bot <[email protected]> Reviewed-by: Mickael Istria <[email protected]>
1 parent 4bda6b1 commit e688763

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2674,7 +2674,7 @@ void doLineDown(boolean select) {
26742674
for (int i = 0; i < caretOffsets.length; i++) {
26752675
int caretOffset = caretOffsets[i];
26762676
int caretLine = content.getLineAtOffset(caretOffset);
2677-
int x = getPointAtOffset(caretOffset).x;
2677+
int x = caretOffsets.length == 1 ? columnX : getPointAtOffset(caretOffset).x;
26782678
int y = 0;
26792679
boolean lastLine = false;
26802680
if (isWordWrap()) {
@@ -2775,7 +2775,7 @@ void doLineUp(boolean select) {
27752775
for (int i = 0; i < caretOffsets.length; i++) {
27762776
int caretOffset = caretOffsets[i];
27772777
int caretLine = content.getLineAtOffset(caretOffset);
2778-
int x = getPointAtOffset(caretOffset).x;
2778+
int x = caretOffsets.length == 1 ? columnX : getPointAtOffset(caretOffset).x;
27792779
int y = 0;
27802780
boolean firstLine = false;
27812781
if (isWordWrap()) {

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5921,6 +5921,28 @@ public void test_caretLocationOnArrowMove() {
59215921
assertEquals(text.getCaret().getLocation(), caretLocation);
59225922
}
59235923

5924+
5925+
/**
5926+
* Bug 576052 - ArrowDown does keep position after new line
5927+
*/
5928+
@Test
5929+
public void test_arrowDownKeepsPositionAfterNewLine() {
5930+
text.setText(
5931+
"...\n"
5932+
+ "\n"
5933+
+ "............................................................\n");
5934+
5935+
shell.open();
5936+
text.setSize(10, 50);
5937+
text.setSelection(2);
5938+
5939+
text.invokeAction(ST.LINE_DOWN);
5940+
assertEquals(4, text.getSelection().x);
5941+
text.invokeAction(ST.LINE_DOWN);
5942+
assertEquals(7, text.getSelection().x);
5943+
}
5944+
5945+
59245946
/**
59255947
* Bug 565164 - SWT.BS event no longer working
59265948
*/

0 commit comments

Comments
 (0)