Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Conversation

@gspencergoog
Copy link
Contributor

@gspencergoog gspencergoog commented Nov 4, 2020

Description

This re-lands #21163, which was reverted in #22004

Now that flutter/flutter#67359 has landed, this change will no longer cause spaces (and other shortcuts) to be ignored in text fields if there is no action associated with the intent, even if there is a shortcut key mapping to an intent.

It also no longer causes web test failures (as far as I can tell without submitting it: the same tests don't fail locally).

Here's the original PR description:

This switches from using dispatchKeyEvent to using dispatchKeyEventPreIme so that keys can be intercepted before they reach the IME and be handled by the framework.

It also now intercepts key events sent to InputConnection.sendKeyEvent, as some IMEs do (e.g. the Hacker's Keyboard), and sends the to Flutter before sending them to the IME (which it now only does if they are not handled by the framework).

This fixes the problem where pressing TAB on a hardware keyboard sends the tab to both the text field and to the focus traversal system.

Note that we still can't intercept all keystrokes given to a soft keyboard, only those which the soft keyboard decides to send to InputConnection.sendKeyEvent.

Related Issues

Tests

  • Added tests for sending events.

Breaking Change

  • No, no existing tests failed, so this is not a breaking change.

…ent to InputConnection.sendKeyEvent on Android (flutter#21979)" (flutter#22004)"

This reverts commit 3658bd7.
Copy link
Contributor

@dkwingsmt dkwingsmt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

RSLGTM. The PR has no change from the last reland and only reattempts in a different context (other code).

@gspencergoog gspencergoog merged commit 7a8057b into flutter:master Nov 4, 2020
@gspencergoog gspencergoog deleted the try_pre_ime branch November 4, 2020 23:54
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 5, 2020
gspencergoog added a commit to gspencergoog/engine that referenced this pull request Nov 5, 2020
…nputConnection.sendKeyEvent on Android (flutter#22304)"

This reverts commit 7a8057b because it breaks back button functionality.
gspencergoog added a commit that referenced this pull request Nov 5, 2020
…nputConnection.sendKeyEvent on Android (#22304)" (#22321)

This reverts commit 7a8057b because it breaks back button functionality.
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 5, 2020
gspencergoog added a commit to gspencergoog/engine that referenced this pull request Nov 6, 2020
…ent to InputConnection.sendKeyEvent on Android (flutter#22304)" (flutter#22321)"

This reverts commit 5d481fb.
chaselatta pushed a commit to chaselatta/engine that referenced this pull request Nov 30, 2020
…ection.sendKeyEvent on Android (flutter#22304)

This re-lands flutter#21163, which was reverted in flutter#22004

Now that flutter/flutter#67359 has landed, this change will no longer cause spaces (and other shortcuts) to be ignored in text fields if there is no action associated with the intent, even if there is a shortcut key mapping to an intent.

It also no longer causes web test failures (as far as I can tell without submitting it: the same tests don't fail locally).

Here's the original PR description:

This switches from using dispatchKeyEvent to using dispatchKeyEventPreIme so that keys can be intercepted before they reach the IME and be handled by the framework.

It also now intercepts key events sent to InputConnection.sendKeyEvent, as some IMEs do (e.g. the Hacker's Keyboard), and sends the to Flutter before sending them to the IME (which it now only does if they are not handled by the framework).

This fixes the problem where pressing TAB on a hardware keyboard sends the tab to both the text field and to the focus traversal system.

Note that we still can't intercept all keystrokes given to a soft keyboard, only those which the soft keyboard decides to send to InputConnection.sendKeyEvent.
chaselatta pushed a commit to chaselatta/engine that referenced this pull request Nov 30, 2020
…nputConnection.sendKeyEvent on Android (flutter#22304)" (flutter#22321)

This reverts commit 7a8057b because it breaks back button functionality.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Android: focusing widgets to be able to navigate using a hardware keyboard is impossible

2 participants