LibGUI: Allow GUI::Action to swallow key events when disabled

Sometimes an action should be disabled and the KeyEvent not posted to
the app's event loop nonetheless. In other words the action swallows the
KeyEvent without being activated.

Specific use-case: Terminal's Ctrl+Shift+{C,V}.
This commit is contained in:
Linus Groh 2020-12-06 20:53:29 +00:00 committed by Andreas Kling
commit 886fe7e69f
Notes: sideshowbarker 2024-07-19 01:00:48 +09:00
2 changed files with 11 additions and 3 deletions

View file

@ -173,9 +173,13 @@ void WindowServerConnection::handle(const Messages::WindowClient::KeyDown& messa
#endif
}
if (action && action->is_enabled()) {
action->activate();
return;
if (action) {
if (action->is_enabled()) {
action->activate();
return;
}
if (action->swallow_key_event_when_disabled())
return;
}
bool focused_widget_accepts_emoji_input = window->focused_widget() && window->focused_widget()->accepts_emoji_input();