From 615a78ac7809ab0ce3ef80b554af2cad999f77b8 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Thu, 29 Mar 2018 16:51:15 -0700 Subject: [PATCH 1/2] Add test for getStyleRangeAtPosition --- .../SimpleEditableStyledDocumentTest.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) 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); + } } From d1285faa4d700e57598c53c6059881a8120c6b5e Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Thu, 29 Mar 2018 16:52:16 -0700 Subject: [PATCH 2/2] Fix getStyleRangeAtPosition bug: use styles' navigator. --- .../src/main/java/org/fxmisc/richtext/model/Paragraph.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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);