| Other |
|---|
| tbdResolved |
|
Duplicate :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
When hitting a Text node, there is no way to distinguish between a hit to the trailing edge of the last character and a hit beyond the end of text. Both return a HitInfo
charIndex: n-1, isLeading: false
where n is the length of the text. The code to showcase the hit beyond the end of text is below.
For a hit beyond the end of text, I would suggest to return a HitInfo
charIndex: n, isLeading: true
instead. This resolves to the same insertion index, but provides a way to tell apart the two cases.
Note that making this change also resolves RT-37801.
I realize that impl_* methods are not public API, but I'm using them in RichTextFX [1] anyway because there's no public API for this functionality. If you are planning/willing to expose more public API on Text/TextFlow, I will be happy to summarize what private API is currently used in RichTextFX.
import javafx.geometry.Point2D;
import javafx.scene.text.Text;
import com.sun.javafx.scene.text.HitInfo;
public class HitEndOfText {
public static void main(String[] args) {
Text text = new Text("foo");
HitInfo hit = text.impl_hitTestChar(new Point2D(9999, 1));
System.out.println(hit);
// prints: charIndex: 2, isLeading: false
// expected: charIndex: 3, isLeading: true
}
}
[1] https://github.com/TomasMikula/RichTextFX
|