diff --git a/src/libs/advanceddockingsystem/dockareatabbar.cpp b/src/libs/advanceddockingsystem/dockareatabbar.cpp index e1ac0c9b861..c7dab3c2297 100644 --- a/src/libs/advanceddockingsystem/dockareatabbar.cpp +++ b/src/libs/advanceddockingsystem/dockareatabbar.cpp @@ -112,6 +112,14 @@ void DockAreaTabBar::onTabClicked(DockWidgetTab *sourceTab) setCurrentIndex(index); emit tabBarClicked(index); + + // QDS: Focus the actual content widget on tab click + DockWidgetTab *tab = currentTab(); + if (tab && tab->dockWidget() && tab->dockWidget()->widget()) { + QMetaObject::invokeMethod(tab->dockWidget()->widget(), + QOverload<>::of(&QWidget::setFocus), + Qt::QueuedConnection); + } } void DockAreaTabBar::onTabCloseRequested(DockWidgetTab *sourceTab) diff --git a/src/libs/advanceddockingsystem/dockfocuscontroller.cpp b/src/libs/advanceddockingsystem/dockfocuscontroller.cpp index b35963c6db2..ab665ea0ae7 100644 --- a/src/libs/advanceddockingsystem/dockfocuscontroller.cpp +++ b/src/libs/advanceddockingsystem/dockfocuscontroller.cpp @@ -231,6 +231,9 @@ void DockFocusController::onApplicationFocusChanged(QWidget *focusedOld, QWidget return; DockWidget *dockWidget = qobject_cast(focusedNow); + + bool focusActual = dockWidget && dockWidget->widget(); + if (!dockWidget) dockWidget = internal::findParent(focusedNow); @@ -243,6 +246,12 @@ void DockFocusController::onApplicationFocusChanged(QWidget *focusedOld, QWidget #endif d->updateDockWidgetFocus(dockWidget); + + if (focusActual) { + // QDS: Focus the actual content widget when dockWidget gets focus + QMetaObject::invokeMethod(dockWidget->widget(), QOverload<>::of(&QWidget::setFocus), + Qt::QueuedConnection); + } } void DockFocusController::setDockWidgetTabFocused(DockWidgetTab *tab)