RFR: 8306083: Text.hitTest is incorrect when more than one Text node in TextFlow [v7]
Phil Race
prr at openjdk.org
Wed Sep 27 15:35:29 UTC 2023
On Mon, 21 Aug 2023 18:25:08 GMT, Karthik P K <kpk at openjdk.org> wrote:
>> The text run selected in `PrismTextLayout::getHitInfo()` method for character index calculation was not correct when hitTest was invoked for Text node in a TextFlow with more than one Text child. Hence wrong character index value was calculated.
>>
>> Since only x, y coordinates were available in the above mentioned method, sending the text as a parameter to this method is necessary so as to know if the text run selected for character index calculation is correct. Along with this change modified the `PrismTextLayout::getHitInfo()` method to calculate the correct character index.
>>
>> Added tests to validate the changes.
>
> Karthik P K has updated the pull request incrementally with one additional commit since the last revision:
>
> Review comments
Changes requested by prr (Reviewer).
modules/javafx.graphics/src/main/java/com/sun/javafx/text/PrismTextLayout.java line 760:
> 758: int lineCount = getLineCount();
> 759: while (index < lineCount) {
> 760: if (text != null) {
why aren't you using "textFound" as in if "(!textFound) {"
modules/javafx.graphics/src/main/java/com/sun/javafx/text/PrismTextLayout.java line 762:
> 760: if (text != null) {
> 761: for (TextRun r : lines[index].runs) {
> 762: if (r.getTextSpan() == null || r.getTextSpan().getText().equals(text)) {
I am less familiar with this code than I'd like to be, but some things seem odd to me.
(1) If you are looking for a particular match of text, what if there are 2 lines or spans that have the exact same text ?
(2) What is that the logic behind this line ? At least currently you only pass in text for a Text node.
Can you break down what exactly it is doing ?
-------------
PR Review: https://git.openjdk.org/jfx/pull/1157#pullrequestreview-1636193932
PR Review Comment: https://git.openjdk.org/jfx/pull/1157#discussion_r1331981945
PR Review Comment: https://git.openjdk.org/jfx/pull/1157#discussion_r1331987391
More information about the openjfx-dev
mailing list