diff --git a/modules/jfx.incubator.richtext/src/main/java/com/sun/jfx/incubator/scene/control/richtext/RichTextAreaBehavior.java b/modules/jfx.incubator.richtext/src/main/java/com/sun/jfx/incubator/scene/control/richtext/RichTextAreaBehavior.java index b6116967b5a..476726d8883 100644 --- a/modules/jfx.incubator.richtext/src/main/java/com/sun/jfx/incubator/scene/control/richtext/RichTextAreaBehavior.java +++ b/modules/jfx.incubator.richtext/src/main/java/com/sun/jfx/incubator/scene/control/richtext/RichTextAreaBehavior.java @@ -910,7 +910,7 @@ public void selectParagraph() { if (p != null) { int ix = p.index(); TextPos an = TextPos.ofLeading(ix, 0); - TextPos ca = control.getParagraphEnd(ix); + TextPos ca = TextPos.ofLeading(ix + 1, 0); control.select(an, ca); } } diff --git a/modules/jfx.incubator.richtext/src/test/java/test/jfx/incubator/scene/control/richtext/RichTextAreaTest.java b/modules/jfx.incubator.richtext/src/test/java/test/jfx/incubator/scene/control/richtext/RichTextAreaTest.java index 8ca8a98a30d..4a265c67ac0 100644 --- a/modules/jfx.incubator.richtext/src/test/java/test/jfx/incubator/scene/control/richtext/RichTextAreaTest.java +++ b/modules/jfx.incubator.richtext/src/test/java/test/jfx/incubator/scene/control/richtext/RichTextAreaTest.java @@ -642,6 +642,23 @@ public void selectAll() { assertEquals(end, sel.getMax()); } + @Test + public void selectParagraph() { + control.appendText("123\n456\n789"); + // first line + control.select(TextPos.ZERO); + control.selectParagraph(); + SelectionSegment sel = control.getSelection(); + assertEquals(TextPos.ZERO, sel.getMin()); + assertEquals(TextPos.ofLeading(1, 0), sel.getMax()); + // last line, no trailing line separator + control.select(TextPos.ofLeading(2, 0)); + control.selectParagraph(); + sel = control.getSelection(); + assertEquals(TextPos.ofLeading(2, 0), sel.getMin()); + assertEquals(new TextPos(2, 3, 2, false), sel.getMax()); + } + @Test public void undo() { control.appendText("1");