diff --git a/src/DockWidgetBase.cpp b/src/DockWidgetBase.cpp index 022f9aba..b6b37dcf 100644 --- a/src/DockWidgetBase.cpp +++ b/src/DockWidgetBase.cpp @@ -364,6 +364,19 @@ void DockWidgetBase::show() } } +void DockWidgetBase::raise() +{ + if (!isOpen()) + return; + + if (auto fw = qobject_cast(window())) { + fw->raise(); + fw->activateWindow(); + } else { + setAsCurrentTab(); + } +} + void DockWidgetBase::setAffinityName(const QString &name) { if (d->affinityName == name) diff --git a/src/DockWidgetBase.h b/src/DockWidgetBase.h index fd4a516b..c401fad5 100644 --- a/src/DockWidgetBase.h +++ b/src/DockWidgetBase.h @@ -266,6 +266,15 @@ public: /// @brief Equivalent to QWidget::show(), but it's optimized to reduce flickering on some platforms void show(); + /// @brief Brings the dock widget to the front. + /// + /// This means: + /// - If the dock widget is tabbed with other dock widgets but its tab is not current, it's made current. + /// - If the dock widget is floating, QWindow::raise() is called. + /// + /// This only applies if the dock widget is already open. If closed, does nothing. + void raise(); + Q_SIGNALS: ///@brief signal emitted when the parent changed void parentChanged();