diff --git a/tests/auto/controls/data/tst_button.qml b/tests/auto/controls/data/tst_button.qml
index 2ac5cea2c9c44b1266ee3f58e6a029e8cfce180a..f949ec6ea335fdddc83a4a6fb13275c1db2dc641 100644
--- a/tests/auto/controls/data/tst_button.qml
+++ b/tests/auto/controls/data/tst_button.qml
@@ -120,5 +120,78 @@ TestCase {
         verify(control.activeFocus)
         control.destroy()
     }
+
+    function test_activeFocusOnTab() {
+        var test_control = 'import QtQuick 2.1; \
+        import QtQuick.Controls 1.0;            \
+        Item {                                  \
+            width: 200;                         \
+            height: 200;                        \
+            property alias control1: _control1; \
+            property alias control2: _control2; \
+            property alias control3: _control3; \
+            Button  {                           \
+                y: 20;                          \
+                id: _control1;                  \
+                activeFocusOnTab: true;         \
+                text: "control1"                \
+            }                                   \
+            Button  {                           \
+                y: 70;                          \
+                id: _control2;                  \
+                activeFocusOnTab: false;        \
+                text: "control2"                \
+            }                                   \
+            Button  {                           \
+                y: 120;                         \
+                id: _control3;                  \
+                activeFocusOnTab: true;         \
+                text: "control3"                \
+            }                                   \
+        }                                       '
+
+        var control = Qt.createQmlObject(test_control, container, '')
+
+        control.control1.forceActiveFocus()
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+
+        control.control2.activeFocusOnTab = true
+        control.control3.activeFocusOnTab = false
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        control.destroy()
+    }
 }
 }
diff --git a/tests/auto/controls/data/tst_checkbox.qml b/tests/auto/controls/data/tst_checkbox.qml
index 1c9162a8852d46812bdcf4cf9c36913846b86a83..1c74e34d81147225b076db52f15ea45391227d24 100644
--- a/tests/auto/controls/data/tst_checkbox.qml
+++ b/tests/auto/controls/data/tst_checkbox.qml
@@ -233,5 +233,78 @@ Item {
             mouseClick(checkBox, checkBox.x + 1, checkBox.y + 1)
             verify(checkBox.activeFocus)
         }
+
+        function test_activeFocusOnTab() {
+            checkBox.destroy()
+            wait(0) //QTBUG-30523 so processEvents is called
+            var test_control = 'import QtQuick 2.1; \
+            import QtQuick.Controls 1.0;            \
+            Item {                                  \
+                width: 200;                         \
+                height: 200;                        \
+                property alias control1: _control1; \
+                property alias control2: _control2; \
+                property alias control3: _control3; \
+                CheckBox  {                         \
+                    y: 20;                          \
+                    id: _control1;                  \
+                    activeFocusOnTab: true;         \
+                    text: "control1"                \
+                }                                   \
+                CheckBox  {                         \
+                    y: 70;                          \
+                    id: _control2;                  \
+                    activeFocusOnTab: false;        \
+                    text: "control2"                \
+                }                                   \
+                CheckBox  {                         \
+                    y: 120;                         \
+                    id: _control3;                  \
+                    activeFocusOnTab: true;         \
+                    text: "control3"                \
+                }                                   \
+            }                                       '
+
+            var control = Qt.createQmlObject(test_control, container, '')
+            control.control1.forceActiveFocus()
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab)
+            verify(!control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(control.control3.activeFocus)
+            keyPress(Qt.Key_Tab)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(!control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            control.control2.activeFocusOnTab = true
+            control.control3.activeFocusOnTab = false
+            keyPress(Qt.Key_Tab)
+            verify(!control.control1.activeFocus)
+            verify(control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(!control.control1.activeFocus)
+            verify(control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            control.destroy()
+        }
     }
 }
diff --git a/tests/auto/controls/data/tst_combobox.qml b/tests/auto/controls/data/tst_combobox.qml
index 7609c51d79a5e60a4803f7e0f6eece91c023ca41..d6b5f540f271d639fe21b62e4d99dedd05681c1d 100644
--- a/tests/auto/controls/data/tst_combobox.qml
+++ b/tests/auto/controls/data/tst_combobox.qml
@@ -41,6 +41,11 @@
 import QtQuick 2.1
 import QtTest 1.0
 
+Item {
+    id: container
+    width: 400
+    height: 400
+
 TestCase {
     id: testCase
     name: "Tests_ComboBox"
@@ -118,4 +123,74 @@ TestCase {
         compare(comboBox.currentText, "Yellow")
         comboBox.destroy()
     }
+
+    function test_activeFocusOnTab() {
+        var test_control = 'import QtQuick 2.1; \
+        import QtQuick.Controls 1.0;            \
+        Item {                                  \
+            width: 200;                         \
+            height: 200;                        \
+            property alias control1: _control1; \
+            property alias control2: _control2; \
+            property alias control3: _control3; \
+            ComboBox  {                         \
+                y: 20;                          \
+                id: _control1;                  \
+                activeFocusOnTab: true;         \
+            }                                   \
+            ComboBox  {                         \
+                y: 70;                          \
+                id: _control2;                  \
+                activeFocusOnTab: false;        \
+            }                                   \
+            ComboBox  {                         \
+                y: 120;                         \
+                id: _control3;                  \
+                activeFocusOnTab: true;         \
+            }                                   \
+        }                                       '
+
+        var control = Qt.createQmlObject(test_control, container, '')
+        control.control1.forceActiveFocus()
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+
+        control.control2.activeFocusOnTab = true
+        control.control3.activeFocusOnTab = false
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        control.destroy()
+    }
+}
 }
diff --git a/tests/auto/controls/data/tst_groupbox.qml b/tests/auto/controls/data/tst_groupbox.qml
index 81a8580e80b6245bcf43605ede367dee45ccacf7..12784b48e393ea2276acabcdde636f67cae4a897 100644
--- a/tests/auto/controls/data/tst_groupbox.qml
+++ b/tests/auto/controls/data/tst_groupbox.qml
@@ -42,6 +42,11 @@ import QtQuick 2.1
 import QtTest 1.0
 import QtQuick.Controls 1.0
 
+Item {
+    id: container
+    width: 400
+    height: 400
+
 TestCase {
     id: testCase
     name: "Tests_GroupBox"
@@ -106,4 +111,77 @@ TestCase {
         compare(groupBox.child1.enabled, true)
         compare(groupBox.child2.enabled, true)
     }
+
+    function test_activeFocusOnTab() {
+        var test_control = 'import QtQuick 2.1; \
+        import QtQuick.Controls 1.0;            \
+        Item {                                  \
+            width: 200;                         \
+            height: 200;                        \
+            property alias control1: _control1; \
+            property alias control2: _control2; \
+            property alias control3: _control3; \
+            GroupBox  {                         \
+                y: 20;                          \
+                id: _control1;                  \
+                activeFocusOnTab: true;         \
+                title: "control1"               \
+            }                                   \
+            GroupBox  {                         \
+                y: 70;                          \
+                id: _control2;                  \
+                activeFocusOnTab: false;        \
+                title: "control2"               \
+            }                                   \
+            GroupBox  {                         \
+                y: 120;                         \
+                id: _control3;                  \
+                activeFocusOnTab: true;         \
+                title: "control3"               \
+            }                                   \
+        }                                       '
+
+        var control = Qt.createQmlObject(test_control, container, '')
+        control.control1.forceActiveFocus()
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+
+        control.control2.activeFocusOnTab = true
+        control.control3.activeFocusOnTab = false
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        control.destroy()
+    }
+}
 }
diff --git a/tests/auto/controls/data/tst_label.qml b/tests/auto/controls/data/tst_label.qml
index c904d8bed11092ab77a646505f944edfe59fb915..a507869137468a9c53ff6db4cbda3b88e48bab53 100644
--- a/tests/auto/controls/data/tst_label.qml
+++ b/tests/auto/controls/data/tst_label.qml
@@ -41,6 +41,11 @@
 import QtQuick 2.1
 import QtTest 1.0
 
+Item {
+    id: container
+    width: 400
+    height: 400
+
 TestCase {
     id: testCase
     name: "Tests_Label"
@@ -52,4 +57,74 @@ TestCase {
         var label = Qt.createQmlObject('import QtQuick.Controls 1.0; Label {}', testCase, '');
         label.destroy()
     }
+
+    function test_activeFocusOnTab() {
+        var test_control = 'import QtQuick 2.1; \
+        import QtQuick.Controls 1.0;            \
+        Item {                                  \
+            width: 200;                         \
+            height: 200;                        \
+            property alias control1: _control1; \
+            property alias control2: _control2; \
+            property alias control3: _control3; \
+            Label {                             \
+                id: _control1;                  \
+                activeFocusOnTab: true;         \
+                text: "control1"                \
+            }                                   \
+            Label {                             \
+                id: _control2;                  \
+                activeFocusOnTab: false;        \
+                text: "control2"                \
+            }                                   \
+            Label {                             \
+                id: _control3;                  \
+                activeFocusOnTab: true;         \
+                text: "control3"                \
+            }                                   \
+        }                                       '
+
+        var control = Qt.createQmlObject(test_control, container, '')
+        control.control1.forceActiveFocus()
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+
+        control.control2.activeFocusOnTab = true
+        control.control3.activeFocusOnTab = false
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        control.destroy()
+    }
+}
 }
diff --git a/tests/auto/controls/data/tst_progressbar.qml b/tests/auto/controls/data/tst_progressbar.qml
index 02b96ac367c041dd1ee886471b439a0d9a6e9473..3dc7a29abafbd5a9f761e77458fc609d7696f630 100644
--- a/tests/auto/controls/data/tst_progressbar.qml
+++ b/tests/auto/controls/data/tst_progressbar.qml
@@ -41,6 +41,11 @@
 import QtQuick 2.1
 import QtTest 1.0
 
+Item {
+    id: container
+    width: 400
+    height: 400
+
 TestCase {
     id: testCase
     name: "Tests_ProgressBar"
@@ -123,4 +128,74 @@ TestCase {
         progressBar3.destroy()
         progressBar4.destroy()
     }
+
+    function test_activeFocusOnTab() {
+        var test_control = 'import QtQuick 2.1; \
+        import QtQuick.Controls 1.0;            \
+        Item {                                  \
+            width: 200;                         \
+            height: 200;                        \
+            property alias control1: _control1; \
+            property alias control2: _control2; \
+            property alias control3: _control3; \
+            ProgressBar  {                      \
+                y: 20;                          \
+                id: _control1;                  \
+                activeFocusOnTab: true;         \
+            }                                   \
+            ProgressBar  {                      \
+                y: 70;                          \
+                id: _control2;                  \
+                activeFocusOnTab: false;        \
+            }                                   \
+            ProgressBar  {                      \
+                y: 120;                         \
+                id: _control3;                  \
+                activeFocusOnTab: true;         \
+            }                                   \
+        }                                       '
+
+        var control = Qt.createQmlObject(test_control, container, '')
+        control.control1.forceActiveFocus()
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+
+        control.control2.activeFocusOnTab = true
+        control.control3.activeFocusOnTab = false
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        control.destroy()
+    }
+}
 }
diff --git a/tests/auto/controls/data/tst_radiobutton.qml b/tests/auto/controls/data/tst_radiobutton.qml
index 1bdb1c937526886c2d6bc830bd0735751bb48238..855f8c7a6196d30907925adac9b1f4c3a8c8afa0 100644
--- a/tests/auto/controls/data/tst_radiobutton.qml
+++ b/tests/auto/controls/data/tst_radiobutton.qml
@@ -186,5 +186,79 @@ Item {
             mouseClick(radioButton, radioButton.x + 1, radioButton.y + 1)
             verify(radioButton.activeFocus)
         }
+
+        function test_activeFocusOnTab() {
+            radioButton.destroy()
+            wait(0) //QTBUG-30523 so processEvents is called
+            var test_control = 'import QtQuick 2.1; \
+            import QtQuick.Controls 1.0;            \
+            Item {                                  \
+                width: 200;                         \
+                height: 200;                        \
+                property alias control1: _control1; \
+                property alias control2: _control2; \
+                property alias control3: _control3; \
+                RadioButton  {                      \
+                    y: 20;                          \
+                    id: _control1;                  \
+                    activeFocusOnTab: true;         \
+                    text: "control1"                \
+                }                                   \
+                RadioButton  {                      \
+                    y: 70;                          \
+                    id: _control2;                  \
+                    activeFocusOnTab: false;        \
+                    text: "control2"                \
+                }                                   \
+                RadioButton  {                      \
+                    y: 120;                         \
+                    id: _control3;                  \
+                    activeFocusOnTab: true;         \
+                    text: "control3"                \
+                }                                   \
+            }                                       '
+
+            var control = Qt.createQmlObject(test_control, container, '')
+            control.control1.forceActiveFocus()
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab)
+            verify(!control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(control.control3.activeFocus)
+            keyPress(Qt.Key_Tab)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(!control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+
+            control.control2.activeFocusOnTab = true
+            control.control3.activeFocusOnTab = false
+            keyPress(Qt.Key_Tab)
+            verify(!control.control1.activeFocus)
+            verify(control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(!control.control1.activeFocus)
+            verify(control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            control.destroy()
+        }
     }
 }
diff --git a/tests/auto/controls/data/tst_scrollview.qml b/tests/auto/controls/data/tst_scrollview.qml
index a9e73d1ef1e54e5c1d0fe333164cf8b54d0c247d..c273c16b787ec776fcc9f537d531b6adce66dae4 100644
--- a/tests/auto/controls/data/tst_scrollview.qml
+++ b/tests/auto/controls/data/tst_scrollview.qml
@@ -42,6 +42,11 @@ import QtQuick 2.1
 import QtTest 1.0
 import QtQuick.Controls 1.0
 
+Item {
+    id: container
+    width: 400
+    height: 400
+
 TestCase {
     id: testCase
     name: "Tests_ScrollView"
@@ -107,4 +112,71 @@ TestCase {
         verify(scrollView.viewport.width < prevViewportWidth, "Viewport should be smaller with frame")
         scrollView.destroy()
     }
+
+    function test_activeFocusOnTab() {
+        var test_control = 'import QtQuick 2.1; \
+    import QtQuick.Controls 1.0;            \
+    Item {                                  \
+        width: 200;                         \
+        height: 200;                        \
+        property alias control1: _control1; \
+        property alias control2: _control2; \
+        property alias control3: _control3; \
+        ScrollView {                        \
+            id: _control1;                  \
+            activeFocusOnTab: true;         \
+        }                                   \
+        ScrollView {                        \
+            id: _control2;                  \
+            activeFocusOnTab: false;        \
+        }                                   \
+        ScrollView {                        \
+            id: _control3;                  \
+            activeFocusOnTab: true;         \
+        }                                   \
+    }                                       '
+
+        var control = Qt.createQmlObject(test_control, container, '')
+        control.control1.forceActiveFocus()
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+
+        control.control2.activeFocusOnTab = true
+        control.control3.activeFocusOnTab = false
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        control.destroy()
+    }
+}
 }
diff --git a/tests/auto/controls/data/tst_slider.qml b/tests/auto/controls/data/tst_slider.qml
index 88171da5ada89efb691a5fbfdf72c6dcae7457f6..6d846fdba64b6c4bc63f078995f0404122e51259 100644
--- a/tests/auto/controls/data/tst_slider.qml
+++ b/tests/auto/controls/data/tst_slider.qml
@@ -155,5 +155,74 @@ Item {
             verify(control.activeFocus)
             control.destroy()
         }
+
+        function test_activeFocusOnTab() {
+            var test_control = 'import QtQuick 2.1; \
+            import QtQuick.Controls 1.0;            \
+            Item {                                  \
+                width: 200;                         \
+                height: 200;                        \
+                property alias control1: _control1; \
+                property alias control2: _control2; \
+                property alias control3: _control3; \
+                Slider  {                           \
+                    y: 20;                          \
+                    id: _control1;                  \
+                    activeFocusOnTab: true;         \
+                }                                   \
+                Slider  {                           \
+                    y: 70;                          \
+                    id: _control2;                  \
+                    activeFocusOnTab: false;        \
+                }                                   \
+                Slider  {                           \
+                    y: 120;                         \
+                    id: _control3;                  \
+                    activeFocusOnTab: true;         \
+                }                                   \
+            }                                       '
+
+            var control = Qt.createQmlObject(test_control, container, '')
+            control.control1.forceActiveFocus()
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab)
+            verify(!control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(control.control3.activeFocus)
+            keyPress(Qt.Key_Tab)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(!control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+
+            control.control2.activeFocusOnTab = true
+            control.control3.activeFocusOnTab = false
+            keyPress(Qt.Key_Tab)
+            verify(!control.control1.activeFocus)
+            verify(control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(!control.control1.activeFocus)
+            verify(control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            control.destroy()
+        }
     }
 }
diff --git a/tests/auto/controls/data/tst_spinbox.qml b/tests/auto/controls/data/tst_spinbox.qml
index e8b0b5b96b04a966d6b6e4f87301162325dcc009..a43dce41daf5454a4d15e7cf7046e0b88a842f1f 100644
--- a/tests/auto/controls/data/tst_spinbox.qml
+++ b/tests/auto/controls/data/tst_spinbox.qml
@@ -293,6 +293,76 @@ Item {
             spinbox.destroy()
         }
 
+        function test_activeFocusOnTab() {
+            var test_control = 'import QtQuick 2.1; \
+            import QtQuick.Controls 1.0;            \
+            Item {                                  \
+                width: 200;                         \
+                height: 200;                        \
+                property alias control1: _control1; \
+                property alias control2: _control2; \
+                property alias control3: _control3; \
+                SpinBox  {                          \
+                    y: 20;                          \
+                    id: _control1;                  \
+                    activeFocusOnTab: true;         \
+                }                                   \
+                SpinBox  {                          \
+                    y: 70;                          \
+                    id: _control2;                  \
+                    activeFocusOnTab: false;        \
+                }                                   \
+                SpinBox  {                          \
+                    y: 120;                         \
+                    id: _control3;                  \
+                    activeFocusOnTab: true;         \
+                }                                   \
+            }                                       '
+
+            var control = Qt.createQmlObject(test_control, container, '')
+            control.control1.forceActiveFocus()
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab)
+            verify(!control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(control.control3.activeFocus)
+            keyPress(Qt.Key_Tab)
+            sleep(4000)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(!control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+
+            control.control2.activeFocusOnTab = true
+            control.control3.activeFocusOnTab = false
+            keyPress(Qt.Key_Tab)
+            verify(!control.control1.activeFocus)
+            verify(control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(!control.control1.activeFocus)
+            verify(control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            control.destroy()
+        }
+
         function test_ImplicitSize() // Verify if we correctly grow and shrink depending on contents
         {
             var spinbox = Qt.createQmlObject('import QtQuick.Controls 1.0; SpinBox {}', container, '')
@@ -338,6 +408,8 @@ Item {
             downCoord.x = upCoord.x
             downCoord.y = item.y + item.height - arrowMargin
         }
+
+
     }
 }
 
diff --git a/tests/auto/controls/data/tst_statusbar.qml b/tests/auto/controls/data/tst_statusbar.qml
index df0a768c5c2dc5ca24605fbe8d482888852d3359..aa8a7d54df968a610102a7b54eb27bb6d00d8ac0 100644
--- a/tests/auto/controls/data/tst_statusbar.qml
+++ b/tests/auto/controls/data/tst_statusbar.qml
@@ -41,6 +41,11 @@
 import QtQuick 2.1
 import QtTest 1.0
 
+Item {
+    id: container
+    width: 400
+    height: 400
+
 TestCase {
     id: testCase
     name: "Tests_StatusBar"
@@ -52,5 +57,72 @@ TestCase {
         var statusBar = Qt.createQmlObject('import QtQuick.Controls 1.0; StatusBar {}', testCase, '');
         statusBar.destroy()
     }
+
+    function test_activeFocusOnTab() {
+            var test_control = 'import QtQuick 2.1; \
+        import QtQuick.Controls 1.0;            \
+        Item {                                  \
+            width: 200;                         \
+            height: 200;                        \
+            property alias control1: _control1; \
+            property alias control2: _control2; \
+            property alias control3: _control3; \
+            StatusBar {                         \
+                id: _control1;                  \
+                activeFocusOnTab: true;         \
+            }                                   \
+            StatusBar {                         \
+                id: _control2;                  \
+                activeFocusOnTab: false;        \
+            }                                   \
+            StatusBar {                         \
+                id: _control3;                  \
+                activeFocusOnTab: true;         \
+            }                                   \
+        }                                       '
+
+            var control = Qt.createQmlObject(test_control, container, '')
+            control.control1.forceActiveFocus()
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab)
+            verify(!control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(control.control3.activeFocus)
+            keyPress(Qt.Key_Tab)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(!control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+
+            control.control2.activeFocusOnTab = true
+            control.control3.activeFocusOnTab = false
+            keyPress(Qt.Key_Tab)
+            verify(!control.control1.activeFocus)
+            verify(control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(!control.control1.activeFocus)
+            verify(control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+            verify(control.control1.activeFocus)
+            verify(!control.control2.activeFocus)
+            verify(!control.control3.activeFocus)
+            control.destroy()
+    }
+}
 }
 
diff --git a/tests/auto/controls/data/tst_textarea.qml b/tests/auto/controls/data/tst_textarea.qml
index 0756e4c2461d1dba28fa915db08c617b91b5ad1a..7391daea186b175070ed67bc946eb973685e2c18 100644
--- a/tests/auto/controls/data/tst_textarea.qml
+++ b/tests/auto/controls/data/tst_textarea.qml
@@ -78,5 +78,82 @@ TestCase {
         verify(control.activeFocus)
         control.destroy()
     }
+
+    function test_activeFocusOnTab() {
+        // Set TextArea readonly so the tab/backtab can be tested toward the navigation
+        var test_control = 'import QtQuick 2.1; \
+        import QtQuick.Controls 1.0;            \
+        Item {                                  \
+            width: 200;                         \
+            height: 200;                        \
+            property alias control1: _control1; \
+            property alias control2: _control2; \
+            property alias control3: _control3; \
+            TextArea  {                         \
+                y: 20;                          \
+                id: _control1;                  \
+                activeFocusOnTab: true;         \
+                text: "control1";               \
+                readOnly: true                  \
+            }                                   \
+            TextArea  {                         \
+                y: 70;                          \
+                id: _control2;                  \
+                activeFocusOnTab: false;        \
+                text: "control2";               \
+                readOnly: true                  \
+            }                                   \
+            TextArea  {                         \
+                y: 120;                         \
+                id: _control3;                  \
+                activeFocusOnTab: true;         \
+                text: "control3";               \
+                readOnly: true                  \
+            }                                   \
+        }                                       '
+
+        var control = Qt.createQmlObject(test_control, container, '')
+
+        control.control1.forceActiveFocus()
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+
+        control.control2.activeFocusOnTab = true
+        control.control3.activeFocusOnTab = false
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        control.destroy()
+    }
 }
 }
diff --git a/tests/auto/controls/data/tst_textfield.qml b/tests/auto/controls/data/tst_textfield.qml
index 14a18b0e56e629471edb337de60e5a44e6fa3196..6c5ce6b58c6d6c405482768cafe1c03355e53b7b 100644
--- a/tests/auto/controls/data/tst_textfield.qml
+++ b/tests/auto/controls/data/tst_textfield.qml
@@ -276,5 +276,82 @@ TestCase {
         verify(control.activeFocus)
         control.destroy()
     }
+
+    function test_activeFocusOnTab() {
+        // Set TextField readonly so the tab/backtab can be tested toward the navigation
+        var test_control = 'import QtQuick 2.1; \
+        import QtQuick.Controls 1.0;            \
+        Item {                                  \
+            width: 200;                         \
+            height: 200;                        \
+            property alias control1: _control1; \
+            property alias control2: _control2; \
+            property alias control3: _control3; \
+            TextField  {                         \
+                y: 20;                          \
+                id: _control1;                  \
+                activeFocusOnTab: true;         \
+                text: "control1";               \
+                readOnly: true                  \
+            }                                   \
+            TextField  {                         \
+                y: 70;                          \
+                id: _control2;                  \
+                activeFocusOnTab: false;        \
+                text: "control2";               \
+                readOnly: true                  \
+            }                                   \
+            TextField  {                         \
+                y: 120;                         \
+                id: _control3;                  \
+                activeFocusOnTab: true;         \
+                text: "control3";               \
+                readOnly: true                  \
+            }                                   \
+        }                                       '
+
+        var control = Qt.createQmlObject(test_control, container, '')
+
+        control.control1.forceActiveFocus()
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+
+        control.control2.activeFocusOnTab = true
+        control.control3.activeFocusOnTab = false
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        control.destroy()
+    }
 }
 }
diff --git a/tests/auto/controls/data/tst_toolbar.qml b/tests/auto/controls/data/tst_toolbar.qml
index 75cacf93bae95e8f05aa43e796e5187635ed60cc..fc545bd5ed5fe414bd0cd406519625b0b4c9113e 100644
--- a/tests/auto/controls/data/tst_toolbar.qml
+++ b/tests/auto/controls/data/tst_toolbar.qml
@@ -41,6 +41,11 @@
 import QtQuick 2.1
 import QtTest 1.0
 
+Item {
+    id: container
+    width: 400
+    height: 400
+
 TestCase {
     id: testCase
     name: "Tests_ToolBar"
@@ -52,5 +57,72 @@ TestCase {
         var toolBar = Qt.createQmlObject('import QtQuick.Controls 1.0; ToolBar {}', testCase, '');
         toolBar.destroy()
     }
+
+    function test_activeFocusOnTab() {
+        var test_control = 'import QtQuick 2.1; \
+    import QtQuick.Controls 1.0;            \
+    Item {                                  \
+        width: 200;                         \
+        height: 200;                        \
+        property alias control1: _control1; \
+        property alias control2: _control2; \
+        property alias control3: _control3; \
+        ToolBar {                           \
+            id: _control1;                  \
+            activeFocusOnTab: true;         \
+        }                                   \
+        ToolBar {                           \
+            id: _control2;                  \
+            activeFocusOnTab: false;        \
+        }                                   \
+        ToolBar {                           \
+            id: _control3;                  \
+            activeFocusOnTab: true;         \
+        }                                   \
+    }                                       '
+
+        var control = Qt.createQmlObject(test_control, container, '')
+        control.control1.forceActiveFocus()
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+
+        control.control2.activeFocusOnTab = true
+        control.control3.activeFocusOnTab = false
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        control.destroy()
+    }
+}
 }
 
diff --git a/tests/auto/controls/data/tst_toolbutton.qml b/tests/auto/controls/data/tst_toolbutton.qml
index af33cd5a63d3f23d2bb7b43f4860b87645330f1e..9ce7b14342f30de8a03c4b67c4f28ace57c5ebc8 100644
--- a/tests/auto/controls/data/tst_toolbutton.qml
+++ b/tests/auto/controls/data/tst_toolbutton.qml
@@ -70,6 +70,79 @@ TestCase {
         verify(control.activeFocus)
         control.destroy()
     }
+
+    function test_activeFocusOnTab() {
+        var test_control = 'import QtQuick 2.1; \
+        import QtQuick.Controls 1.0;            \
+        Item {                                  \
+            width: 200;                         \
+            height: 200;                        \
+            property alias control1: _control1; \
+            property alias control2: _control2; \
+            property alias control3: _control3; \
+            ToolButton  {                       \
+                y: 20;                          \
+                id: _control1;                  \
+                activeFocusOnTab: true;         \
+                text: "control1"                \
+            }                                   \
+            ToolButton  {                       \
+                y: 70;                          \
+                id: _control2;                  \
+                activeFocusOnTab: false;        \
+                text: "control2"                \
+            }                                   \
+            ToolButton  {                       \
+                y: 120;                         \
+                id: _control3;                  \
+                activeFocusOnTab: true;         \
+                text: "control3"                \
+            }                                   \
+        }                                       '
+
+        var control = Qt.createQmlObject(test_control, container, '')
+
+        control.control1.forceActiveFocus()
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+
+        control.control2.activeFocusOnTab = true
+        control.control3.activeFocusOnTab = false
+        keyPress(Qt.Key_Tab)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(!control.control1.activeFocus)
+        verify(control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        keyPress(Qt.Key_Tab, Qt.ShiftModifier)
+        verify(control.control1.activeFocus)
+        verify(!control.control2.activeFocus)
+        verify(!control.control3.activeFocus)
+        control.destroy()
+    }
 }
 }