mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-20 09:49:15 +03:00
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:
parent
253aa7aa7d
commit
886fe7e69f
Notes:
sideshowbarker
2024-07-19 01:00:48 +09:00
Author: https://github.com/linusg Commit: https://github.com/SerenityOS/serenity/commit/886fe7e69f6 Pull-request: https://github.com/SerenityOS/serenity/pull/4346 Reviewed-by: https://github.com/awesomekling
@ -132,6 +132,9 @@ public:
|
||||
}
|
||||
void set_checked(bool);
|
||||
|
||||
bool swallow_key_event_when_disabled() const { return m_swallow_key_event_when_disabled; }
|
||||
void set_swallow_key_event_when_disabled(bool swallow) { m_swallow_key_event_when_disabled = swallow; }
|
||||
|
||||
void register_button(Badge<Button>, Button&);
|
||||
void unregister_button(Badge<Button>, Button&);
|
||||
void register_menu_item(Badge<MenuItem>, MenuItem&);
|
||||
@ -159,6 +162,7 @@ private:
|
||||
bool m_enabled { true };
|
||||
bool m_checkable { false };
|
||||
bool m_checked { false };
|
||||
bool m_swallow_key_event_when_disabled { false };
|
||||
ShortcutScope m_scope { ShortcutScope::None };
|
||||
|
||||
HashTable<Button*> m_buttons;
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user