Skip to content

Commit

Permalink
Merge pull request FXMisc#604 from JordanMartinez/fixRegression
Browse files Browse the repository at this point in the history
Fix regression: use only valid indexes for setting a merged segment
  • Loading branch information
JordanMartinez authored Oct 3, 2017
2 parents ed98ae5 + a01d9c8 commit ce00638
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -303,9 +303,8 @@ public void setup() {

@Test
public void copying_and_pasting_should_not_throw_exception() {
push(CONTROL, C);

push(CONTROL, V);
interact(area::copy);
interact(area::paste);
}
}
}
Expand Down
16 changes: 10 additions & 6 deletions richtextfx/src/main/java/org/fxmisc/richtext/model/Paragraph.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,17 @@ private static <SEG, S> Tuple2<List<SEG>, StyleSpans<S>> decompose(List<StyledSe
StyleSpansBuilder<S> builder = new StyleSpansBuilder<>();
for (StyledSegment<SEG, S> styledSegment : list) {
// attempt to merge differently-styled consecutive segments into one
int lastIndex = segs.size() - 1;
SEG previousSeg = segs.get(lastIndex);
Optional<SEG> merged = segmentOps.joinSeg(previousSeg, styledSegment.getSegment());
if (merged.isPresent()) {
segs.set(lastIndex, merged.get());
} else {
if (segs.isEmpty()) {
segs.add(styledSegment.getSegment());
} else {
int lastIndex = segs.size() - 1;
SEG previousSeg = segs.get(lastIndex);
Optional<SEG> merged = segmentOps.joinSeg(previousSeg, styledSegment.getSegment());
if (merged.isPresent()) {
segs.set(lastIndex, merged.get());
} else {
segs.add(styledSegment.getSegment());
}
}
// builder merges styles shared between consecutive different segments
builder.add(styledSegment.getStyle(), segmentOps.length(styledSegment.getSegment()));
Expand Down

0 comments on commit ce00638

Please sign in to comment.