diff --git a/Libraries/LibGUI/TabWidget.cpp b/Libraries/LibGUI/TabWidget.cpp index 61bf19863e..1f5e3e724e 100644 --- a/Libraries/LibGUI/TabWidget.cpp +++ b/Libraries/LibGUI/TabWidget.cpp @@ -236,7 +236,15 @@ void TabWidget::mousedown_event(MouseEvent& event) auto button_rect = this->button_rect(i); if (!button_rect.contains(event.position())) continue; - set_active_widget(m_tabs[i].widget); + if (event.button() == MouseButton::Left) { + set_active_widget(m_tabs[i].widget); + } else if (event.button() == MouseButton::Middle) { + auto* widget = m_tabs[i].widget; + deferred_invoke([this, widget](auto&) { + if (on_middle_click && widget) + on_middle_click(*widget); + }); + } return; } } diff --git a/Libraries/LibGUI/TabWidget.h b/Libraries/LibGUI/TabWidget.h index a5757a2285..dc9aac9689 100644 --- a/Libraries/LibGUI/TabWidget.h +++ b/Libraries/LibGUI/TabWidget.h @@ -80,6 +80,7 @@ public: int uniform_tab_width() const; Function on_change; + Function on_middle_click; protected: TabWidget();