diff options
author | Berthold Krevert <berthold.krevert@basyskom.com> | 2014-04-30 20:48:20 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-05-12 19:11:13 +0200 |
commit | ff365f7b465dc699a5a8a86106de8863812525a4 (patch) | |
tree | a69753e961bbf97991fa89e40a780a51f61d2078 | |
parent | df63c4f1310830fbd7f97c07dabf1ff6e1982fb2 (diff) | |
download | qtquickcontrols-ff365f7b465dc699a5a8a86106de8863812525a4.tar.gz |
Set State_KeyboardFocusChange if focus has been requested by keyboard
Some styles (QFusionStyle, QGtkStyle) don't draw a focus rectangle if
QStyle::State_KeyboardFocusChange is not set. This patch is based on
change,84388 in QtDeclarative.
Change-Id: Ic0c0bdd68689055cff12d601e64b77b53e7980dd
Reviewed-by: Liang Qi <liang.qi@digia.com>
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
-rw-r--r-- | src/controls/Private/qquickstyleitem.cpp | 10 | ||||
-rw-r--r-- | src/controls/controls.pro | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/controls/Private/qquickstyleitem.cpp b/src/controls/Private/qquickstyleitem.cpp index 10bda95d..b04eeaa9 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 e7cd6ada..fd4aac0d 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 |