Browse Source

LibGUI: Open context menu on 'Menu' key down

Jean-Baptiste Boric 4 years ago
parent
commit
d9aaa8afe9
2 changed files with 11 additions and 1 deletions
  1. 10 1
      Userland/Libraries/LibGUI/Widget.cpp
  2. 1 0
      Userland/Libraries/LibGUI/Widget.h

+ 10 - 1
Userland/Libraries/LibGUI/Widget.cpp

@@ -260,7 +260,7 @@ void Widget::event(Core::Event& event)
     case Event::Hide:
         return hide_event(static_cast<HideEvent&>(event));
     case Event::KeyDown:
-        return keydown_event(static_cast<KeyEvent&>(event));
+        return handle_keydown_event(static_cast<KeyEvent&>(event));
     case Event::KeyUp:
         return keyup_event(static_cast<KeyEvent&>(event));
     case Event::MouseMove:
@@ -294,6 +294,15 @@ void Widget::event(Core::Event& event)
     }
 }
 
+void Widget::handle_keydown_event(KeyEvent& event)
+{
+    keydown_event(event);
+    if (event.key() == KeyCode::Key_Menu) {
+        ContextMenuEvent c_event(window_relative_rect().bottom_right(), screen_relative_rect().bottom_right());
+        context_menu_event(c_event);
+    }
+}
+
 void Widget::handle_paint_event(PaintEvent& event)
 {
     ASSERT(is_visible());

+ 1 - 0
Userland/Libraries/LibGUI/Widget.h

@@ -345,6 +345,7 @@ private:
     void handle_mousedown_event(MouseEvent&);
     void handle_mousedoubleclick_event(MouseEvent&);
     void handle_mouseup_event(MouseEvent&);
+    void handle_keydown_event(KeyEvent&);
     void handle_enter_event(Core::Event&);
     void handle_leave_event(Core::Event&);
     void focus_previous_widget(FocusSource, bool siblings_only);