Skip to content

Commit b8b7afd

Browse files
Merge pull request #746 from JordanMartinez/fixParEndBug
Fix bug: wrongly calculated value used for `moveToParEnd`
2 parents ebcc396 + be7b9df commit b8b7afd

4 files changed

Lines changed: 18 additions & 9 deletions

File tree

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

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,13 @@ public class And_Text_Is_Not_Selected extends InlineCssTextAreaAppTest {
9393

9494
private String firstWord = "Some";
9595
private String firstParagraph = firstWord + " text goes here";
96+
private String secondWord = "More";
97+
private String secondParagraph = secondWord + " text goes here";
9698

9799
@Override
98100
public void start(Stage stage) throws Exception {
99101
super.start(stage);
100-
area.replaceText(firstParagraph);
102+
area.replaceText(firstParagraph + "\n" + secondParagraph);
101103
area.moveTo(0);
102104
}
103105

@@ -123,10 +125,17 @@ public void double_clicking_text_in_area_selects_closest_word() {
123125
}
124126

125127
@Test
126-
public void triple_clicking_line_in_area_selects_paragraph() {
127-
tripleClickOnFirstLine();
128+
public void triple_clicking_line_in_area_selects_paragraph()
129+
throws InterruptedException, ExecutionException {
128130

129-
assertEquals(firstParagraph, area.getSelectedText());
131+
int wordStart = firstParagraph.length() + 1;
132+
Bounds bounds = asyncFx(
133+
() -> area.getCharacterBoundsOnScreen(wordStart, wordStart + 1).get())
134+
.get();
135+
136+
moveTo(bounds).doubleClickOn(PRIMARY).clickOn(PRIMARY);
137+
138+
assertEquals(secondParagraph, area.getSelectedText());
130139
}
131140

132141
@Test

richtextfx/src/main/java/org/fxmisc/richtext/CaretNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ public void moveToParStart() {
266266

267267
@Override
268268
public void moveToParEnd() {
269-
moveTo(area.getParagraphLength(getParagraphIndex()));
269+
moveTo(getPosition() - getColumnPosition() + area.getParagraphLength(getParagraphIndex()));
270270
}
271271

272272
@Override

richtextfx/src/main/java/org/fxmisc/richtext/CaretSelectionBind.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,8 +322,9 @@ else if(pos >= sel.getEnd())
322322
void moveToAreaEnd(NavigationActions.SelectionPolicy selectionPolicy);
323323

324324
default void selectParagraph() {
325-
moveToParStart(NavigationActions.SelectionPolicy.CLEAR);
326-
moveToParEnd(NavigationActions.SelectionPolicy.ADJUST);
325+
int parStartPosition = getPosition() - getColumnPosition();
326+
int parEndPosition = parStartPosition + getArea().getParagraphLength(getParagraphIndex());
327+
selectRange(parStartPosition, parEndPosition);
327328
}
328329

329330
/**

richtextfx/src/main/java/org/fxmisc/richtext/CaretSelectionBindImpl.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -409,8 +409,7 @@ public void moveToParStart(NavigationActions.SelectionPolicy selectionPolicy) {
409409

410410
@Override
411411
public void moveToParEnd(NavigationActions.SelectionPolicy selectionPolicy) {
412-
int newPos = getArea().getParagraphLength(getParagraphIndex());
413-
moveTo(newPos, selectionPolicy);
412+
moveTo(getPosition() - getColumnPosition() + getArea().getParagraphLength(getParagraphIndex()), selectionPolicy);
414413
}
415414

416415
@Override

0 commit comments

Comments
 (0)