瀏覽代碼

LibGUI: Open context menu on 'Menu' key down

Jean-Baptiste Boric 4 年之前
父節點
當前提交
d9aaa8afe9
共有 2 個文件被更改,包括 11 次插入1 次删除
  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:
     case Event::Hide:
         return hide_event(static_cast<HideEvent&>(event));
         return hide_event(static_cast<HideEvent&>(event));
     case Event::KeyDown:
     case Event::KeyDown:
-        return keydown_event(static_cast<KeyEvent&>(event));
+        return handle_keydown_event(static_cast<KeyEvent&>(event));
     case Event::KeyUp:
     case Event::KeyUp:
         return keyup_event(static_cast<KeyEvent&>(event));
         return keyup_event(static_cast<KeyEvent&>(event));
     case Event::MouseMove:
     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)
 void Widget::handle_paint_event(PaintEvent& event)
 {
 {
     ASSERT(is_visible());
     ASSERT(is_visible());

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

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