Skip to content

Commit fcb5349

Browse files
committed
Improve setStyleSpans performance.
1 parent 0500a2c commit fcb5349

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.fxmisc.richtext;
22

3+
import static org.fxmisc.richtext.TwoDimensional.Bias.*;
4+
35
import java.util.ArrayList;
46
import java.util.Collections;
57
import java.util.List;
@@ -138,13 +140,13 @@ public void setStyleSpans(int from, StyleSpans<? extends S> styleSpans) {
138140
int len = styleSpans.length();
139141
ensureValidRange(from, from + len);
140142
doc.replace(from, from + len, d -> {
141-
int i = -1;
143+
Position i = styleSpans.position(0, 0);
142144
List<Paragraph<PS, S>> pars = new ArrayList<>(d.getParagraphs().size());
143145
for(Paragraph<PS, S> p: d.getParagraphs()) {
144-
i += 1;
145-
StyleSpans<? extends S> spans = styleSpans.subView(i, i + p.length());
146+
Position j = i.offsetBy(p.length(), Backward);
147+
StyleSpans<? extends S> spans = styleSpans.subView(i, j);
146148
pars.add(p.restyle(0, spans));
147-
i += p.length();
149+
i = j.offsetBy(1, Forward); // skip the newline
148150
}
149151
return new ReadOnlyStyledDocument<>(pars);
150152
}).exec(this::update);

0 commit comments

Comments
 (0)