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..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,18 +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()); }); - int caretPos = area.getCaretPosition(); + String selText = area.getSelectedText(); moveTo(firstLineOfArea()) .press(PRIMARY) - .dropBy(0, 14); + .dropBy(0, 22); - assertTrue(caretPos != area.getCaretPosition()); - assertTrue(area.getSelectedText().isEmpty()); + String expectedText = firstParagraph.substring(firstWord.length()) + + "\n" + firstWord + extraText; + + assertEquals(firstParagraph.length() + 1, area.getCaretPosition()); + assertEquals(selText, area.getSelectedText()); + assertEquals(expectedText, area.getText()); } } 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()); } } }