diff --git a/Libraries/LibGUI/TabWidget.cpp b/Libraries/LibGUI/TabWidget.cpp index e4d3fbb799..baf3799c6a 100644 --- a/Libraries/LibGUI/TabWidget.cpp +++ b/Libraries/LibGUI/TabWidget.cpp @@ -370,4 +370,19 @@ void TabWidget::keydown_event(KeyEvent& event) Widget::keydown_event(event); } +void TabWidget::context_menu_event(ContextMenuEvent& context_menu_event) +{ + for (size_t i = 0; i < m_tabs.size(); ++i) { + auto button_rect = this->button_rect(i); + if (!button_rect.contains(context_menu_event.position())) + continue; + auto* widget = m_tabs[i].widget; + deferred_invoke([this, widget, context_menu_event](auto&) { + if (on_context_menu_request && widget) + on_context_menu_request(*widget, context_menu_event); + }); + return; + } +} + } diff --git a/Libraries/LibGUI/TabWidget.h b/Libraries/LibGUI/TabWidget.h index d2ebd063ea..3c49acfa5d 100644 --- a/Libraries/LibGUI/TabWidget.h +++ b/Libraries/LibGUI/TabWidget.h @@ -84,6 +84,7 @@ public: Function on_change; Function on_middle_click; + Function on_context_menu_request; protected: TabWidget(); @@ -95,6 +96,7 @@ protected: virtual void mousemove_event(MouseEvent&) override; virtual void leave_event(Core::Event&) override; virtual void keydown_event(KeyEvent&) override; + virtual void context_menu_event(ContextMenuEvent&) override; private: Gfx::Rect child_rect_for_size(const Gfx::Size&) const;