forked from qt-creator/qt-creator
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:
@@ -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))
|
||||||
|
@@ -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:
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user