ADS: Focus content widget when tab is clicked or dockwidget gets focus

Fixes: QDS-10396
Change-Id: Ic7d4a73ff535c0c0cb73e1e5bd636bec00a1336c
Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
This commit is contained in:
Miikka Heikkinen
2023-08-04 11:14:03 +03:00
parent 5195b0296b
commit a80dc7789e
2 changed files with 17 additions and 0 deletions

View File

@@ -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)

View File

@@ -231,6 +231,9 @@ void DockFocusController::onApplicationFocusChanged(QWidget *focusedOld, QWidget
return;
DockWidget *dockWidget = qobject_cast<DockWidget *>(focusedNow);
bool focusActual = dockWidget && dockWidget->widget();
if (!dockWidget)
dockWidget = internal::findParent<DockWidget *>(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)