From bc44cd2f2571d96d200f2506195b2ac9bb79acd8 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Thu, 7 Sep 2017 10:13:40 +0200 Subject: [PATCH 1/3] select moved text after drag-and-drop --- .../src/main/java/org/fxmisc/richtext/model/EditActions.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/richtextfx/src/main/java/org/fxmisc/richtext/model/EditActions.java b/richtextfx/src/main/java/org/fxmisc/richtext/model/EditActions.java index 8f00b3cbd..2747b154f 100644 --- a/richtextfx/src/main/java/org/fxmisc/richtext/model/EditActions.java +++ b/richtextfx/src/main/java/org/fxmisc/richtext/model/EditActions.java @@ -186,6 +186,9 @@ default void moveSelectedText(int pos) { pos -= sel.getLength(); deleteText(sel); insert(pos, text); + + // select moved text + selectRange(pos, pos + text.length()); } } } From 51b2edfa0ba1647ad3a5cc21978e94c4d21df306 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Thu, 7 Sep 2017 23:19:24 +0200 Subject: [PATCH 2/3] attempt to fix unit test for previous commit (select moved text after drag-and-drop) --- .../java/org/fxmisc/richtext/mouse/ClickAndDragTests.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/richtextfx/src/integrationTest/java/org/fxmisc/richtext/mouse/ClickAndDragTests.java b/richtextfx/src/integrationTest/java/org/fxmisc/richtext/mouse/ClickAndDragTests.java index 296fc47b9..ebfcd5fc9 100644 --- a/richtextfx/src/integrationTest/java/org/fxmisc/richtext/mouse/ClickAndDragTests.java +++ b/richtextfx/src/integrationTest/java/org/fxmisc/richtext/mouse/ClickAndDragTests.java @@ -261,6 +261,7 @@ public void pressingMouseOnSelectionAndDraggingAndReleasingMovesSelectedTextToTh area.selectRange(0, firstWord.length()); }); + String selText = area.getSelectedText(); int caretPos = area.getCaretPosition(); moveTo(firstLineOfArea()) @@ -268,7 +269,7 @@ public void pressingMouseOnSelectionAndDraggingAndReleasingMovesSelectedTextToTh .dropBy(0, 14); assertTrue(caretPos != area.getCaretPosition()); - assertTrue(area.getSelectedText().isEmpty()); + assertEquals(selText, area.getSelectedText()); } } From 76788dbcde5f9a34d9d6681e7c0d6ec64d8c0fd2 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Tue, 12 Sep 2017 16:22:40 +0200 Subject: [PATCH 3/3] 2nd attempt to fix unit test for previous commit (select moved text after drag-and-drop) --- .../richtext/mouse/ClickAndDragTests.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/richtextfx/src/integrationTest/java/org/fxmisc/richtext/mouse/ClickAndDragTests.java b/richtextfx/src/integrationTest/java/org/fxmisc/richtext/mouse/ClickAndDragTests.java index ebfcd5fc9..bc2a576bd 100644 --- a/richtextfx/src/integrationTest/java/org/fxmisc/richtext/mouse/ClickAndDragTests.java +++ b/richtextfx/src/integrationTest/java/org/fxmisc/richtext/mouse/ClickAndDragTests.java @@ -132,6 +132,7 @@ public class AndTextIsSelected extends InlineCssTextAreaAppTest { private String firstWord = "Some"; private String firstParagraph = firstWord + " text goes here"; + private String extraText = "This is extra text"; @Test public void singleClickingWithinSelectedTextMovesCaretToThatPosition() { @@ -238,18 +239,17 @@ public void pressingMouseOnUnselectedTextAndDraggingMakesNewSelection() { public void pressingMouseOnSelectionAndDraggingDisplacesCaret() { // setup interact(() -> { - area.replaceText(firstParagraph + "\n" + "This is extra text"); + area.replaceText(firstParagraph + "\n" + extraText); area.selectRange(0, firstWord.length()); }); String selText = area.getSelectedText(); - int caretPos = area.getCaretPosition(); moveTo(firstLineOfArea()) .press(PRIMARY) - .moveBy(0, 14); + .moveBy(0, 22); - assertTrue(caretPos != area.getCaretPosition()); + assertEquals(firstParagraph.length() + 1, area.getCaretPosition()); assertEquals(selText, area.getSelectedText()); } @@ -257,19 +257,22 @@ public void pressingMouseOnSelectionAndDraggingDisplacesCaret() { public void pressingMouseOnSelectionAndDraggingAndReleasingMovesSelectedTextToThatPosition() { // setup interact(() -> { - area.replaceText(firstParagraph + "\n" + "This is extra text"); + area.replaceText(firstParagraph + "\n" + extraText); area.selectRange(0, firstWord.length()); }); String selText = area.getSelectedText(); - int caretPos = area.getCaretPosition(); moveTo(firstLineOfArea()) .press(PRIMARY) - .dropBy(0, 14); + .dropBy(0, 22); - assertTrue(caretPos != area.getCaretPosition()); + String expectedText = firstParagraph.substring(firstWord.length()) + + "\n" + firstWord + extraText; + + assertEquals(firstParagraph.length() + 1, area.getCaretPosition()); assertEquals(selText, area.getSelectedText()); + assertEquals(expectedText, area.getText()); } }