Fixed: the focusable CDockWidget would lose focus when another QWindow containing a CDockManager that contains a focusable CDockWidget gains focus

This commit is contained in:
wingsummer 2024-09-16 17:21:03 +08:00 committed by 潘翔
parent 979d76aa47
commit 147afda646

13
src/DockFocusController.cpp Normal file → Executable file
View File

@ -260,7 +260,8 @@ void CDockFocusController::onFocusWindowChanged(QWindow *focusWindow)
return; return;
} }
d->updateDockWidgetFocus(DockWidget); if(DockWidget->dockManager() == d->DockManager)
d->updateDockWidgetFocus(DockWidget);
} }
@ -298,10 +299,11 @@ void CDockFocusController::onApplicationFocusChanged(QWidget* focusedOld, QWidge
if (!DockWidget || DockWidget->tabWidget()->isHidden()) if (!DockWidget || DockWidget->tabWidget()->isHidden())
{ {
return; return;
} }
#endif #endif
d->updateDockWidgetFocus(DockWidget); if(DockWidget->dockManager() == d->DockManager)
d->updateDockWidgetFocus(DockWidget);
} }
@ -309,7 +311,7 @@ void CDockFocusController::onApplicationFocusChanged(QWidget* focusedOld, QWidge
void CDockFocusController::setDockWidgetTabFocused(CDockWidgetTab* Tab) void CDockFocusController::setDockWidgetTabFocused(CDockWidgetTab* Tab)
{ {
auto DockWidget = Tab->dockWidget(); auto DockWidget = Tab->dockWidget();
if (DockWidget) if (DockWidget && DockWidget->dockManager() == d->DockManager)
{ {
d->updateDockWidgetFocus(DockWidget); d->updateDockWidgetFocus(DockWidget);
} }
@ -327,7 +329,8 @@ void CDockFocusController::clearDockWidgetFocus(CDockWidget* dockWidget)
//=========================================================================== //===========================================================================
void CDockFocusController::setDockWidgetFocused(CDockWidget* focusedNow) void CDockFocusController::setDockWidgetFocused(CDockWidget* focusedNow)
{ {
d->updateDockWidgetFocus(focusedNow); if(focusedNow->dockManager() == d->DockManager)
d->updateDockWidgetFocus(focusedNow);
} }