diff --git a/Userland/Libraries/LibGUI/Widget.cpp b/Userland/Libraries/LibGUI/Widget.cpp index 89ec37d361..85b521924e 100644 --- a/Userland/Libraries/LibGUI/Widget.cpp +++ b/Userland/Libraries/LibGUI/Widget.cpp @@ -260,7 +260,7 @@ void Widget::event(Core::Event& event) case Event::Hide: return hide_event(static_cast(event)); case Event::KeyDown: - return keydown_event(static_cast(event)); + return handle_keydown_event(static_cast(event)); case Event::KeyUp: return keyup_event(static_cast(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()); diff --git a/Userland/Libraries/LibGUI/Widget.h b/Userland/Libraries/LibGUI/Widget.h index 03dafc6a33..642597fa71 100644 --- a/Userland/Libraries/LibGUI/Widget.h +++ b/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);