Integrated: 8301900: TextArea: Committing text with ENTER in an IME window inserts newline
Martin Fox
mfox at openjdk.org
Fri Feb 23 22:43:04 UTC 2024
On Fri, 26 Jan 2024 17:32:02 GMT, Martin Fox <mfox at openjdk.org> wrote:
> In the Mac glass code the presence of "marked" text (which is tracked in the nsAttrBuffer) signals that an IME is active. In this state the current code assumes that when NSTextInputContext handles a `keyDown:` it will either generate a call to `insertText:replacementRange:` or one of the routines that manipulates the marked (composed) text. But this bug shows that sometimes the IME acts on the event without generating any calls back into glass at all.
>
> In this PR the logic is simplified: if the NSTextInputContext handles the `keyDown:` and there's marked (composed) text we don't generate a KeyEvent. Otherwise we do. This PR removes the `shouldProcessKeyEvent` flag since it no longer assumes we can catch callbacks to update it correctly.
>
> The existing code also assumes that the composition phase ends when the NSTextInputContext calls `insertText:replacementRange` to commit the text. This is true but if the user tries to use a dead-key sequence to generate a non-existent character (like an accented 'q') the context will call `insertText` twice while handling one key down event. In that case we can't exit the composition mode upon seeing the first `insertText` call since it will cause us to mis-handle the second one. This PR defers exiting composition mode until the end of `keyDown:`.
>
> I also updated a few deprecated constants so this file no longer generates compiler warnings.
This pull request has now been integrated.
Changeset: d9263ab2
Author: Martin Fox <mfox at openjdk.org>
URL: https://git.openjdk.org/jfx/commit/d9263ab268d33104279755dc1de139bd0835fdd7
Stats: 60 lines in 3 files changed: 35 ins; 10 del; 15 mod
8301900: TextArea: Committing text with ENTER in an IME window inserts newline
8088172: Mac: On German keyboard, pressing <+><q> inserts two apostrophes instead of one
8089803: [Mac, TextArea] Japanese IME, caret moves to the next line when pressing Return to select a candidate.
Reviewed-by: kcr, angorya
-------------
PR: https://git.openjdk.org/jfx/pull/1351
More information about the openjfx-dev
mailing list