-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Closed
flutter/engine
#31200Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work lista: desktopRunning on desktopRunning on desktopa: text inputEntering text in a text field or keyboard related problemsEntering text in a text field or keyboard related problemsplatform-windowsBuilding on or for Windows specificallyBuilding on or for Windows specifically
Description
On Windows, if a WM_KEYDOWN produces a character, when this message is redispatched, its message result does not meet expectation.
Here's what should happen if a KeyA is pressed and the framework decides not to handle:
- System dispatches
WM_KEYDOWNfor KeyA, the message should be handled by the engine. (*1) - System dispatches
WM_CHARfor KeyA, the message should be handled by the engine. - The framework decides not to handle this key event, so the engine redispatches it.
- System dispatches
WM_KEYDOWNfor KeyA, the message should not be handled by the engine. (*2) - System dispatches
WM_CHARfor KeyA, the message should not be handled by the engine.
Currently, there's no way to reach this behavior under our current structure, where message(*1) and message(*2) return different results, because such messages are returned before being sent to KeyboardKeyHandler (see code here), where redispatches are recorded. We need to refactor the keyboard system so that redispatching wraps message triaging.
Metadata
Metadata
Assignees
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work lista: desktopRunning on desktopRunning on desktopa: text inputEntering text in a text field or keyboard related problemsEntering text in a text field or keyboard related problemsplatform-windowsBuilding on or for Windows specificallyBuilding on or for Windows specifically