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