diff --git a/src/private/widgets/TabBarWidget.cpp b/src/private/widgets/TabBarWidget.cpp index 6d7bef7a..197b7296 100644 --- a/src/private/widgets/TabBarWidget.cpp +++ b/src/private/widgets/TabBarWidget.cpp @@ -111,6 +111,11 @@ void TabBarWidget::mouseMoveEvent(QMouseEvent *e) } } +void TabBarWidget::mouseDoubleClickEvent(QMouseEvent *e) +{ + TabBar::onMouseDoubleClick(e->pos()); +} + bool TabBarWidget::dragCanStart(QPoint pressPos, QPoint pos) const { // Here we allow the user to re-order tabs instead of dragging them off. diff --git a/src/private/widgets/TabBarWidget_p.h b/src/private/widgets/TabBarWidget_p.h index b73abb00..2de7ccf8 100644 --- a/src/private/widgets/TabBarWidget_p.h +++ b/src/private/widgets/TabBarWidget_p.h @@ -47,6 +47,7 @@ protected: bool dragCanStart(QPoint pressPos, QPoint pos) const override; void mousePressEvent(QMouseEvent *) override; void mouseMoveEvent(QMouseEvent *e) override; + void mouseDoubleClickEvent(QMouseEvent *e) override; private: TabWidget *const m_tabWidget; }; diff --git a/src/private/widgets/TabWidget.cpp b/src/private/widgets/TabWidget.cpp index eb0d9856..13c449d9 100644 --- a/src/private/widgets/TabWidget.cpp +++ b/src/private/widgets/TabWidget.cpp @@ -115,6 +115,12 @@ void TabBar::onMousePress(QPoint localPos) m_lastPressedDockWidget = dockWidgetAt(localPos); } +void TabBar::onMouseDoubleClick(QPoint localPos) +{ + if (DockWidgetBase *dw = dockWidgetAt(localPos)) + dw->setFloating(true); +} + bool TabBar::hasSingleDockWidget() const { return numDockWidgets() == 1; diff --git a/src/private/widgets/TabWidget_p.h b/src/private/widgets/TabWidget_p.h index 43cb5e3e..72cdadfc 100644 --- a/src/private/widgets/TabWidget_p.h +++ b/src/private/widgets/TabWidget_p.h @@ -67,6 +67,7 @@ public: FloatingWindow *detachTab(DockWidgetBase *dockWidget); void onMousePress(QPoint localPos); + void onMouseDoubleClick(QPoint localPos); ///@brief returns whether there's only 1 tab bool hasSingleDockWidget() const;