diff --git a/src/controls/Private/qquickstyleitem.cpp b/src/controls/Private/qquickstyleitem.cpp index 10bda95d643512459c6a52cd79c500d13655539f..b04eeaa954fa223a09b018c78728c65585c60f1e 100644 --- a/src/controls/Private/qquickstyleitem.cpp +++ b/src/controls/Private/qquickstyleitem.cpp @@ -50,6 +50,7 @@ #include <qsgsimpletexturenode.h> #include <qquickwindow.h> #include "private/qguiapplication_p.h" +#include <QtQuick/private/qquickwindow_p.h> #include <QtGui/qpa/qplatformtheme.h> #include "../qquickmenuitem_p.h" @@ -757,6 +758,15 @@ void QQuickStyleItem::initStyleOption() if (m_horizontal) m_styleoption->state |= QStyle::State_Horizontal; + // some styles don't draw a focus rectangle if + // QStyle::State_KeyboardFocusChange is not set + if (window()) { + Qt::FocusReason lastFocusReason = QQuickWindowPrivate::get(window())->lastFocusReason; + if (lastFocusReason == Qt::TabFocusReason || lastFocusReason == Qt::BacktabFocusReason) { + m_styleoption->state |= QStyle::State_KeyboardFocusChange; + } + } + if (sizeHint == "mini") { m_styleoption->state |= QStyle::State_Mini; } else if (sizeHint == "small") { diff --git a/src/controls/controls.pro b/src/controls/controls.pro index e7cd6adaf8e16e2e6ac1a892e4f65584f6ba73f6..fd4aac0d0c24c0452f9b34a546c7971b614c1638 100644 --- a/src/controls/controls.pro +++ b/src/controls/controls.pro @@ -2,7 +2,7 @@ TARGET = qtquickcontrolsplugin TARGETPATH = QtQuick/Controls IMPORT_VERSION = 1.2 -QT += qml quick gui-private core-private +QT += qml quick quick-private gui-private core-private QMAKE_DOCS = $$PWD/doc/qtquickcontrols.qdocconf