Skip to content

Commit 78fcff1

Browse files
Merge pull request #576 from JFormDesigner/select-dropped-text
select moved text after drag-and-drop
2 parents 2390566 + 76788db commit 78fcff1

2 files changed

Lines changed: 16 additions & 9 deletions

File tree

richtextfx/src/integrationTest/java/org/fxmisc/richtext/mouse/ClickAndDragTests.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ public class AndTextIsSelected extends InlineCssTextAreaAppTest {
132132

133133
private String firstWord = "Some";
134134
private String firstParagraph = firstWord + " text goes here";
135+
private String extraText = "This is extra text";
135136

136137
@Test
137138
public void singleClickingWithinSelectedTextMovesCaretToThatPosition() {
@@ -238,37 +239,40 @@ public void pressingMouseOnUnselectedTextAndDraggingMakesNewSelection() {
238239
public void pressingMouseOnSelectionAndDraggingDisplacesCaret() {
239240
// setup
240241
interact(() -> {
241-
area.replaceText(firstParagraph + "\n" + "This is extra text");
242+
area.replaceText(firstParagraph + "\n" + extraText);
242243
area.selectRange(0, firstWord.length());
243244
});
244245

245246
String selText = area.getSelectedText();
246-
int caretPos = area.getCaretPosition();
247247

248248
moveTo(firstLineOfArea())
249249
.press(PRIMARY)
250-
.moveBy(0, 14);
250+
.moveBy(0, 22);
251251

252-
assertTrue(caretPos != area.getCaretPosition());
252+
assertEquals(firstParagraph.length() + 1, area.getCaretPosition());
253253
assertEquals(selText, area.getSelectedText());
254254
}
255255

256256
@Test
257257
public void pressingMouseOnSelectionAndDraggingAndReleasingMovesSelectedTextToThatPosition() {
258258
// setup
259259
interact(() -> {
260-
area.replaceText(firstParagraph + "\n" + "This is extra text");
260+
area.replaceText(firstParagraph + "\n" + extraText);
261261
area.selectRange(0, firstWord.length());
262262
});
263263

264-
int caretPos = area.getCaretPosition();
264+
String selText = area.getSelectedText();
265265

266266
moveTo(firstLineOfArea())
267267
.press(PRIMARY)
268-
.dropBy(0, 14);
268+
.dropBy(0, 22);
269269

270-
assertTrue(caretPos != area.getCaretPosition());
271-
assertTrue(area.getSelectedText().isEmpty());
270+
String expectedText = firstParagraph.substring(firstWord.length())
271+
+ "\n" + firstWord + extraText;
272+
273+
assertEquals(firstParagraph.length() + 1, area.getCaretPosition());
274+
assertEquals(selText, area.getSelectedText());
275+
assertEquals(expectedText, area.getText());
272276
}
273277

274278
}

richtextfx/src/main/java/org/fxmisc/richtext/model/EditActions.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,9 @@ default void moveSelectedText(int pos) {
186186
pos -= sel.getLength();
187187
deleteText(sel);
188188
insert(pos, text);
189+
190+
// select moved text
191+
selectRange(pos, pos + text.length());
189192
}
190193
}
191194
}

0 commit comments

Comments
 (0)