diff --git a/src/DockFocusController.cpp b/src/DockFocusController.cpp index 27acc4a..57112c7 100644 --- a/src/DockFocusController.cpp +++ b/src/DockFocusController.cpp @@ -423,6 +423,13 @@ CDockWidget* CDockFocusController::focusedDockWidget() const } +//========================================================================== +CDockAreaWidget* CDockFocusController::focusedDockArea() const +{ + return d->FocusedArea.data(); +} + + //========================================================================== void CDockFocusController::setDockWidgetTabPressed(bool Value) { diff --git a/src/DockFocusController.h b/src/DockFocusController.h index 27d9fc1..80f0c2a 100644 --- a/src/DockFocusController.h +++ b/src/DockFocusController.h @@ -69,6 +69,12 @@ public: */ CDockWidget* focusedDockWidget() const; + /** + * Returns the dock area that contains the focusedDockWidget() or nullptr if + * the focused dock widget is not in this area. + */ + CDockAreaWidget* focusedDockArea() const; + /** * Request focus highlighting for the given dock widget assigned to the tab * given in Tab parameter diff --git a/src/DockWidgetTab.cpp b/src/DockWidgetTab.cpp index 572b781..bb1bd93 100644 --- a/src/DockWidgetTab.cpp +++ b/src/DockWidgetTab.cpp @@ -599,9 +599,9 @@ void CDockWidgetTab::setActiveTab(bool active) if (CDockManager::testConfigFlag(CDockManager::FocusHighlighting) && !d->DockWidget->dockManager()->isRestoringState()) { bool UpdateFocusStyle = false; - if (active && !hasFocus()) - { - //setFocus(Qt::OtherFocusReason); + // Update the focus only, if this the dock area of this tab is the focused dock area + if (active && !hasFocus() && (d->focusController()->focusedDockArea() == this->dockAreaWidget())) + { d->focusController()->setDockWidgetTabFocused(this); UpdateFocusStyle = true; }