From 611bef47ce2cd515c92f0321b73df5680bfff666 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Mon, 23 Oct 2023 19:52:57 +0200 Subject: [PATCH] DockFocusController: Avoid using sender() for visibilityChanged() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use Qt::SingleShotConnection connection instead and remove disconnect. Change-Id: If3ec082bb2341277bfeb781b13986492a88172e6 Reviewed-by: Henning Gründl Reviewed-by: Qt CI Bot --- .../dockfocuscontroller.cpp | 20 +++++-------------- .../dockfocuscontroller.h | 1 - 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/src/libs/advanceddockingsystem/dockfocuscontroller.cpp b/src/libs/advanceddockingsystem/dockfocuscontroller.cpp index ab665ea0ae7..a9fd274004c 100644 --- a/src/libs/advanceddockingsystem/dockfocuscontroller.cpp +++ b/src/libs/advanceddockingsystem/dockfocuscontroller.cpp @@ -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(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)) diff --git a/src/libs/advanceddockingsystem/dockfocuscontroller.h b/src/libs/advanceddockingsystem/dockfocuscontroller.h index a9e11e13662..992dee27736 100644 --- a/src/libs/advanceddockingsystem/dockfocuscontroller.h +++ b/src/libs/advanceddockingsystem/dockfocuscontroller.h @@ -30,7 +30,6 @@ private: void onFocusWindowChanged(QWindow *focusWindow); void onFocusedDockAreaViewToggled(bool open); void onStateRestored(); - void onDockWidgetVisibilityChanged(bool visible); public: /**