DockFocusController: Avoid using sender() for visibilityChanged()

Use Qt::SingleShotConnection connection instead and remove
disconnect.

Change-Id: If3ec082bb2341277bfeb781b13986492a88172e6
Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Jarek Kobus
2023-10-23 19:52:57 +02:00
parent b75df9eb83
commit 611bef47ce
2 changed files with 5 additions and 16 deletions

View File

@@ -158,24 +158,14 @@ void DockFocusControllerPrivate::updateDockWidgetFocus(DockWidget *dockWidget)
emit m_dockManager->focusedDockWidgetChanged(old, dockWidget); emit m_dockManager->focusedDockWidgetChanged(old, dockWidget);
} else { } else {
m_oldFocusedDockWidget = old; m_oldFocusedDockWidget = old;
QObject::connect(dockWidget, QObject::connect(dockWidget, &DockWidget::visibilityChanged, q,
&DockWidget::visibilityChanged, [this, dockWidget](bool visible) {
q, if (visible)
&DockFocusController::onDockWidgetVisibilityChanged); emit m_dockManager->focusedDockWidgetChanged(m_oldFocusedDockWidget, dockWidget);
}, Qt::SingleShotConnection);
} }
} }
void DockFocusController::onDockWidgetVisibilityChanged(bool visible)
{
auto dockWidget = qobject_cast<DockWidget *>(sender());
QObject::disconnect(dockWidget,
&DockWidget::visibilityChanged,
this,
&DockFocusController::onDockWidgetVisibilityChanged);
if (dockWidget && visible)
emit d->m_dockManager->focusedDockWidgetChanged(d->m_oldFocusedDockWidget, dockWidget);
}
DockFocusController::DockFocusController(DockManager *dockManager) DockFocusController::DockFocusController(DockManager *dockManager)
: QObject(dockManager) : QObject(dockManager)
, d(new DockFocusControllerPrivate(this)) , d(new DockFocusControllerPrivate(this))

View File

@@ -30,7 +30,6 @@ private:
void onFocusWindowChanged(QWindow *focusWindow); void onFocusWindowChanged(QWindow *focusWindow);
void onFocusedDockAreaViewToggled(bool open); void onFocusedDockAreaViewToggled(bool open);
void onStateRestored(); void onStateRestored();
void onDockWidgetVisibilityChanged(bool visible);
public: public:
/** /**