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);
} else {
m_oldFocusedDockWidget = old;
QObject::connect(dockWidget,
&DockWidget::visibilityChanged,
q,
&DockFocusController::onDockWidgetVisibilityChanged);
QObject::connect(dockWidget, &DockWidget::visibilityChanged, q,
[this, dockWidget](bool visible) {
if (visible)
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)
: QObject(dockManager)
, d(new DockFocusControllerPrivate(this))

View File

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