RFR: 8319844 : Text/TextFlow.hitTest() is incorrect in RTL orientation [v11]
John Hendrikx
jhendrikx at openjdk.org
Wed Feb 21 19:02:06 UTC 2024
On Wed, 21 Feb 2024 13:03:46 GMT, Karthik P K <kpk at openjdk.org> wrote:
> > To determine the runStart/runEnd, `Text` is already analyzing the runs (and doing coordinate tests on them). Runs however have locations, with x/y coordinates. Would it not be possible, and more sensible, to adjust the `x`, `y` coordinates passed to `getHitInfo` instead of leaving those as coordinates relative to the `Text` ? I mean, you are using the parents `TextLayout`, so it would make sense to pass that `TextLayout` coordinates that are correct for it in the first place?
>
> I'm afraid we can't do this. Primarily because if we pass `TextLayout` coordinates in the case of Text node embedded in TextFlow, we do not know if the character index needs to be calculated relative to the Text node or for the entire TextFlow. There is no way we could figure out this case without the extra parameters. Also if we do not pass the start value of the TextRun on which hit test is requested, there is no way to figure out on which Text node it is requested when same Text is repeated in the TextFlow.
I'm unclear on this part, do you mean it's possible that multiple `Text` objects could be hit at the same time? There should only be one `TextRun` at a certain x/y coordinate right?
> For the case like wrapped Text node inside TextFlow, we need to have text value, otherwise we can't determine if the same text is present in the previous line.
If the `Text` is wrapped, there will be multiple `TextRun`s. The coordinate given will match to one of the runs. The run then has a link back to a `TextSpan`, which has a `getText()` ?
> So I believe we need these extra parameters to calculate the hit info for all the cases.
Okay, well, we have some good new tests, so perhaps I'll play with it a bit to see what it is possible.
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1323#issuecomment-1957709245
More information about the openjfx-dev
mailing list