diff --git a/richtextfx/src/main/java/org/fxmisc/richtext/model/Paragraph.java b/richtextfx/src/main/java/org/fxmisc/richtext/model/Paragraph.java index 608e6558b..704760851 100644 --- a/richtextfx/src/main/java/org/fxmisc/richtext/model/Paragraph.java +++ b/richtextfx/src/main/java/org/fxmisc/richtext/model/Paragraph.java @@ -389,7 +389,7 @@ public S getStyleAtPosition(int position) { * then the range preceding {@code position} is returned. */ public IndexRange getStyleRangeAtPosition(int position) { - Position pos = navigator.offsetToPosition(position, Backward); + Position pos = styles.offsetToPosition(position, Backward); int start = position - pos.getMinor(); int end = start + styles.getStyleSpan(pos.getMajor()).getLength(); return new IndexRange(start, end); diff --git a/richtextfx/src/test/java/org/fxmisc/richtext/model/SimpleEditableStyledDocumentTest.java b/richtextfx/src/test/java/org/fxmisc/richtext/model/SimpleEditableStyledDocumentTest.java index c70977ebf..75e024c48 100644 --- a/richtextfx/src/test/java/org/fxmisc/richtext/model/SimpleEditableStyledDocumentTest.java +++ b/richtextfx/src/test/java/org/fxmisc/richtext/model/SimpleEditableStyledDocumentTest.java @@ -1,6 +1,8 @@ package org.fxmisc.richtext.model; import static org.junit.Assert.*; + +import javafx.scene.control.IndexRange; import org.junit.Test; public class SimpleEditableStyledDocumentTest { @@ -111,4 +113,24 @@ public void testSetNonEmptyParagraphStyle() { document.setParagraphStyle(0, newParStyle); assertEquals(newParStyle, document.getParagraphStyle(0)); } + + @Test + public void testGetStyleRangeAtPosition() { + SimpleEditableStyledDocument document = new SimpleEditableStyledDocument<>("", ""); + String first = "some"; + String second = " text"; + replaceText(document, 0, 0, first + second); + document.setStyle(0, first.length(), "abc"); + + IndexRange range = document.getStyleRangeAtPosition(0); + IndexRange expected = new IndexRange(0, first.length()); + assertEquals(expected, range); + + range = document.getStyleRangeAtPosition(first.length()); + assertEquals(expected, range); + + range = document.getStyleRangeAtPosition(first.length() + 1); + expected = new IndexRange(first.length(), (first + second).length()); + assertEquals(expected, range); + } }