diff --git a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowser.qml b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowser.qml index c702b445686..c749ee03f51 100644 --- a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowser.qml +++ b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowser.qml @@ -9,6 +9,7 @@ import StudioTheme 1.0 as StudioTheme Item { id: root + focus: true readonly property int cellWidth: 100 readonly property int cellHeight: 120 diff --git a/src/libs/advanceddockingsystem/dockfocuscontroller.cpp b/src/libs/advanceddockingsystem/dockfocuscontroller.cpp index 79b6c6cad29..c0c632cb989 100644 --- a/src/libs/advanceddockingsystem/dockfocuscontroller.cpp +++ b/src/libs/advanceddockingsystem/dockfocuscontroller.cpp @@ -162,6 +162,8 @@ namespace ADS if (!dockWidget) dockWidget = qobject_cast(focusedNow); + bool focusActual = dockWidget && dockWidget->widget(); + if (!dockWidget) dockWidget = internal::findParent(focusedNow); @@ -174,6 +176,12 @@ namespace ADS #endif d->updateDockWidgetFocus(dockWidget); + + if (focusActual) { + // Do this async to avoid issues when changing focus in middle of another focus handling + QMetaObject::invokeMethod(dockWidget->widget(), QOverload<>::of(&QWidget::setFocus), + Qt::QueuedConnection); + } } void DockFocusController::setDockWidgetFocused(DockWidget *focusedNow) diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp index 682d12fc1be..76944eeb225 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp @@ -207,6 +207,8 @@ MaterialBrowserWidget::MaterialBrowserWidget(AsynchronousImageCache &imageCache, QmlDesignerPlugin::trackWidgetFocusTime(this, Constants::EVENT_MATERIALBROWSER_TIME); reloadQmlSource(); + + setFocusProxy(m_quickWidget.data()); } void MaterialBrowserWidget::updateMaterialPreview(const ModelNode &node, const QPixmap &pixmap) diff --git a/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp b/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp index fb161a26b03..30d58bac76f 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp @@ -66,6 +66,8 @@ NavigatorWidget::NavigatorWidget(NavigatorView *view) setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(sheet))); QmlDesignerPlugin::trackWidgetFocusTime(this, Constants::EVENT_NAVIGATORVIEW_TIME); + + setFocusProxy(m_treeView); } void NavigatorWidget::setTreeModel(QAbstractItemModel *model)