RFR: 8296266: TextArea: Navigation breaks with RTL text

Andy Goryachev angorya at openjdk.org
Thu Aug 31 19:07:10 UTC 2023


On Wed, 30 Aug 2023 12:10:37 GMT, Karthik P K <kpk at openjdk.org> wrote:

>> The fix uses character BreakIterator instead of the logic that relies on caretBounds/hitTest/rangeShape in TextInputControl.nextCharacterVisually().
>> 
>> I believe this is a more reliable method of navigation, as it behaves in sync with the jdk break iterator, thought it might work differently around grapheme clusters, considering a recent change JDK-8291660
>> 
>> This change also introduces TextInputControlHelper class (impl. detail) which gives access to character- and word- break iterators cached by TextInputControl (*some say* these iterators and associated editing logic should be a part of Content implementation, but that's a discussion for another day).
>
> When the shortcut: cmd + right arrow is used to traverse the text area, caret is displayed on the both sides of the RTL text  as shown in screenshot below. This is not observed if individual character is traversed using right arrow or shortcut option + right arrow is used to traverse word by word.
> <img width="362" alt="image" src="https://github.com/openjdk/jfx/assets/26969459/054b202f-c034-4f98-a56d-9521c1754e87">
> Rest of the changes look good to me.

Thank you for testing, @karthikpandelu !

> This is not observed if individual character is traversed using right arrow or shortcut option + right arrow...

This statement is not exactly correct.  Cmd+right navigates to a (visible) line end, in this case it's in the middle of the text string (index=8).  So if you place the cursor after the colon (index=7) and press right arrow, you'll get the split caret in exact the same configuration as cmd+right.

-------------

PR Comment: https://git.openjdk.org/jfx/pull/1220#issuecomment-1701604665


More information about the openjfx-dev mailing list