RFR: 8304831: TextFlow.hitTest.insertionIndex incorrect with surrogate pairs [v5]
Karthik P K
kpk at openjdk.org
Thu May 18 09:29:57 UTC 2023
On Tue, 16 May 2023 10:32:00 GMT, Karthik P K <kpk at openjdk.org> wrote:
>> Since surrogate pairs are internally considered as 2 characters and text field is null in `HitInfo` when `getInsertionIndex` is invoked from `TextFlow`, wrong insertion index was returned.
>>
>> Updated code to calculate insertion index in `getHitInfo` method of `PrismTextLayout` class when `hitTest` of trailing side of surrogate pair is requested. Since text runs are processed in this method already, calculating the insertion index in this method looks better than calculating in `getInsertionIndex` of `HitInfo` method.
>> The latter approach also requires the text to be sent to `HitInfo` as parameter from the `hitTest` method of `TextFlow`. If the number of `Text` nodes in `TextFlow` are very large, processing all the `Text` nodes on each `hitTest` method invocation might cause performance issue. Hence implemented first approach.
>>
>> Added system test to validate the fix.
>
> Karthik P K has updated the pull request incrementally with one additional commit since the last revision:
>
> Change insertion index initialization approach. Add additional test
Added new test to validate character index and insertion index in wrapped text.
Made optimizations to use single mouse move function in all the tests.
@andy-goryachev-oracle , above failure is caused because test is asserting before the mouse event handler could retrive hitinfo values. So added small delays in all the tests to make sure that the text is rendered and test becomes stable before getting the hitinfo values and assertion. Please let me know if you are able to run all the tests.
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1091#issuecomment-1552785330
More information about the openjfx-dev
mailing list