From c6bb3d452a4f2b504c7d77263f811f1d019ac05f Mon Sep 17 00:00:00 2001 From: Jakub Berkop <32750982+Safffatttu@users.noreply.github.com> Date: Mon, 23 Nov 2020 18:41:15 +0100 Subject: LibGUI: Widget::action_for_key_event() should fail for invalid shortcuts (#4137) Previously GUI::Actions which were constructed without initializing m_shortcut could be activated via an invalid GUI::Shortcut. Steps to reproduce: It was possible to enable TextEditor's markdown preview by pressing Ctrl or Alt (Cmd/Ctrl) keys, which should not happen, as this Action did not specify a shortcut. This fix should apply to all other cases where actions where declared without specifying a shortcut. --- Libraries/LibGUI/Widget.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'Libraries') diff --git a/Libraries/LibGUI/Widget.cpp b/Libraries/LibGUI/Widget.cpp index 10a21e0fe8..9c5cb721f5 100644 --- a/Libraries/LibGUI/Widget.cpp +++ b/Libraries/LibGUI/Widget.cpp @@ -739,6 +739,11 @@ bool Widget::is_backmost() const Action* Widget::action_for_key_event(const KeyEvent& event) { Shortcut shortcut(event.modifiers(), (KeyCode)event.key()); + + if (!shortcut.is_valid()) { + return nullptr; + } + Action* found_action = nullptr; for_each_child_of_type([&](auto& action) { if (action.shortcut() == shortcut) { -- cgit v1.2.3