Bläddra i källkod

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.
Jakub Berkop 4 år sedan
förälder
incheckning
c6bb3d452a
1 ändrade filer med 5 tillägg och 0 borttagningar
  1. 5 0
      Libraries/LibGUI/Widget.cpp

+ 5 - 0
Libraries/LibGUI/Widget.cpp

@@ -739,6 +739,11 @@ bool Widget::is_backmost() const
 Action* Widget::action_for_key_event(const KeyEvent& event)
 Action* Widget::action_for_key_event(const KeyEvent& event)
 {
 {
     Shortcut shortcut(event.modifiers(), (KeyCode)event.key());
     Shortcut shortcut(event.modifiers(), (KeyCode)event.key());
+
+    if (!shortcut.is_valid()) {
+        return nullptr;
+    }
+
     Action* found_action = nullptr;
     Action* found_action = nullptr;
     for_each_child_of_type<Action>([&](auto& action) {
     for_each_child_of_type<Action>([&](auto& action) {
         if (action.shortcut() == shortcut) {
         if (action.shortcut() == shortcut) {