aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qtquick2/qquickfocusscope
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qtquick2/qquickfocusscope')
-rw-r--r--tests/auto/qtquick2/qquickfocusscope/data/canvasFocus.qml22
-rw-r--r--tests/auto/qtquick2/qquickfocusscope/data/chain.qml28
-rw-r--r--tests/auto/qtquick2/qquickfocusscope/data/forceActiveFocus.qml26
-rw-r--r--tests/auto/qtquick2/qquickfocusscope/data/forcefocus.qml81
-rw-r--r--tests/auto/qtquick2/qquickfocusscope/data/qtBug13380.qml24
-rw-r--r--tests/auto/qtquick2/qquickfocusscope/data/signalEmission.qml33
-rw-r--r--tests/auto/qtquick2/qquickfocusscope/data/test.qml77
-rw-r--r--tests/auto/qtquick2/qquickfocusscope/data/test2.qml39
-rw-r--r--tests/auto/qtquick2/qquickfocusscope/data/test3.qml52
-rw-r--r--tests/auto/qtquick2/qquickfocusscope/data/test4.qml76
-rw-r--r--tests/auto/qtquick2/qquickfocusscope/data/test5.qml84
-rw-r--r--tests/auto/qtquick2/qquickfocusscope/qquickfocusscope.pro14
-rw-r--r--tests/auto/qtquick2/qquickfocusscope/tst_qquickfocusscope.cpp636
13 files changed, 0 insertions, 1192 deletions
diff --git a/tests/auto/qtquick2/qquickfocusscope/data/canvasFocus.qml b/tests/auto/qtquick2/qquickfocusscope/data/canvasFocus.qml
deleted file mode 100644
index 7d8dac5a22..0000000000
--- a/tests/auto/qtquick2/qquickfocusscope/data/canvasFocus.qml
+++ /dev/null
@@ -1,22 +0,0 @@
-import QtQuick 2.0
-
-Column {
- FocusScope {
- objectName: "scope1"
- width: 20 ;height: 20
- focus: true
- Rectangle {
- objectName: "item1"
- anchors.fill: parent
- focus: true
- }
- }
- FocusScope {
- objectName: "scope2"
- width: 20 ;height: 20
- Rectangle {
- objectName: "item2"
- anchors.fill: parent
- }
- }
-}
diff --git a/tests/auto/qtquick2/qquickfocusscope/data/chain.qml b/tests/auto/qtquick2/qquickfocusscope/data/chain.qml
deleted file mode 100644
index 4b96662318..0000000000
--- a/tests/auto/qtquick2/qquickfocusscope/data/chain.qml
+++ /dev/null
@@ -1,28 +0,0 @@
-import QtQuick 2.0
-
-Rectangle {
- id: root
- width:300; height:400
-
- property bool focus1: root.activeFocus
- property bool focus2: item1.activeFocus
- property bool focus3: fs1.activeFocus
- property bool focus4: fs2.activeFocus
- property bool focus5: theItem.activeFocus
-
- Item {
- id: item1
- FocusScope {
- id: fs1
- focus: true
- FocusScope {
- id: fs2
- focus: true
- Item {
- id: theItem
- focus: true
- }
- }
- }
- }
-}
diff --git a/tests/auto/qtquick2/qquickfocusscope/data/forceActiveFocus.qml b/tests/auto/qtquick2/qquickfocusscope/data/forceActiveFocus.qml
deleted file mode 100644
index 74d2106888..0000000000
--- a/tests/auto/qtquick2/qquickfocusscope/data/forceActiveFocus.qml
+++ /dev/null
@@ -1,26 +0,0 @@
-import QtQuick 2.0
-
-Rectangle {
- objectName: "root"
- FocusScope {
- objectName: "scope"
- Item {
- objectName: "item-a1"
- FocusScope {
- objectName: "scope-a"
- Item {
- objectName: "item-a2"
- }
- }
- }
- Item {
- objectName: "item-b1"
- FocusScope {
- objectName: "scope-b"
- Item {
- objectName: "item-b2"
- }
- }
- }
- }
-}
diff --git a/tests/auto/qtquick2/qquickfocusscope/data/forcefocus.qml b/tests/auto/qtquick2/qquickfocusscope/data/forcefocus.qml
deleted file mode 100644
index f41582a951..0000000000
--- a/tests/auto/qtquick2/qquickfocusscope/data/forcefocus.qml
+++ /dev/null
@@ -1,81 +0,0 @@
-import QtQuick 2.0
-
-Rectangle {
- width: 800; height: 600
-
- FocusScope {
- focus: true
-
- FocusScope {
- id: firstScope
- objectName: "item0"
- focus: true
-
- Rectangle {
- height: 120; width: 420
-
- color: "transparent"
- border.width: 5; border.color: firstScope.activeFocus?"blue":"black"
-
- Rectangle {
- id: item1; objectName: "item1"
- x: 10; y: 10; width: 100; height: 100; color: "green"
- border.width: 5; border.color: activeFocus?"blue":"black"
- focus: true
-
- Rectangle {
- width: 50; height: 50; anchors.centerIn: parent
- color: parent.activeFocus?"red":"transparent"
- }
- }
-
- Rectangle {
- id: item2; objectName: "item2"
- x: 310; y: 10; width: 100; height: 100; color: "green"
- border.width: 5; border.color: activeFocus?"blue":"black"
-
- Rectangle {
- width: 50; height: 50; anchors.centerIn: parent
- color: parent.activeFocus?"red":"transparent"
- }
- }
- }
- }
-
- FocusScope {
- id: secondScope
- objectName: "item3"
-
- Rectangle {
- y: 160; height: 120; width: 420
-
- color: "transparent"
- border.width: 5; border.color: secondScope.activeFocus?"blue":"black"
-
- Rectangle {
- id: item4; objectName: "item4"
- x: 10; y: 10; width: 100; height: 100; color: "green"
- border.width: 5; border.color: activeFocus?"blue":"black"
-
- Rectangle {
- width: 50; height: 50; anchors.centerIn: parent
- color: parent.activeFocus?"red":"transparent"
- }
- }
-
- Rectangle {
- id: item5; objectName: "item5"
- x: 310; y: 10; width: 100; height: 100; color: "green"
- border.width: 5; border.color: activeFocus?"blue":"black"
-
- Rectangle {
- width: 50; height: 50; anchors.centerIn: parent
- color: parent.activeFocus?"red":"transparent"
- }
- }
- }
- }
- }
- Keys.onDigit4Pressed: item4.focus = true
- Keys.onDigit5Pressed: item5.forceActiveFocus()
-}
diff --git a/tests/auto/qtquick2/qquickfocusscope/data/qtBug13380.qml b/tests/auto/qtquick2/qquickfocusscope/data/qtBug13380.qml
deleted file mode 100644
index 29de046b38..0000000000
--- a/tests/auto/qtquick2/qquickfocusscope/data/qtBug13380.qml
+++ /dev/null
@@ -1,24 +0,0 @@
-import QtQuick 2.0
-
-Rectangle {
- width: 400; height: 400
-
- property bool showRect: false
- onShowRectChanged: if (showRect) rect.visible = true
- property bool noFocus: !fs2.activeFocus
-
- FocusScope {
- id: fs1
- focus: true
- }
- Rectangle {
- id: rect
- visible: false
- FocusScope {
- id: fs2
- Rectangle {
- focus: true
- }
- }
- }
-}
diff --git a/tests/auto/qtquick2/qquickfocusscope/data/signalEmission.qml b/tests/auto/qtquick2/qquickfocusscope/data/signalEmission.qml
deleted file mode 100644
index 999a40c5ad..0000000000
--- a/tests/auto/qtquick2/qquickfocusscope/data/signalEmission.qml
+++ /dev/null
@@ -1,33 +0,0 @@
-import QtQuick 2.0
-
-Rectangle {
- width: 200
- height: 200
-
- FocusScope {
- focus: true
- Rectangle {
- objectName: "item1"
- color: "blue"
- onFocusChanged: focus ? color = "red" : color = "blue"
- }
- Rectangle {
- objectName: "item2"
- color: "blue"
- onFocusChanged: focus ? color = "red" : color = "blue"
- }
- }
-
- FocusScope {
- Rectangle {
- objectName: "item3"
- color: "blue"
- onFocusChanged: focus ? color = "red" : color = "blue"
- }
- Rectangle {
- objectName: "item4"
- color: "blue"
- onFocusChanged: focus ? color = "red" : color = "blue"
- }
- }
-}
diff --git a/tests/auto/qtquick2/qquickfocusscope/data/test.qml b/tests/auto/qtquick2/qquickfocusscope/data/test.qml
deleted file mode 100644
index 67be29c3fb..0000000000
--- a/tests/auto/qtquick2/qquickfocusscope/data/test.qml
+++ /dev/null
@@ -1,77 +0,0 @@
-import QtQuick 2.0
-
-Rectangle {
- color: "white"
- width: 800
- height: 600
-
- Keys.onDigit9Pressed: console.log("Error - Root")
-
- FocusScope {
- id: myScope
- objectName: "item0"
- focus: true
-
- Keys.onDigit9Pressed: console.log("Error - FocusScope")
-
- Rectangle {
- height: 120
- width: 420
-
- color: "transparent"
- border.width: 5
- border.color: myScope.activeFocus?"blue":"black"
-
- Rectangle {
- id: item1; objectName: "item1"
- x: 10; y: 10
- width: 100; height: 100; color: "green"
- border.width: 5
- border.color: activeFocus?"blue":"black"
- Keys.onDigit9Pressed: console.debug("Top Left");
- KeyNavigation.right: item2
- focus: true
-
- Rectangle {
- width: 50; height: 50; anchors.centerIn: parent
- color: parent.activeFocus?"red":"transparent"
- }
- }
-
- Rectangle {
- id: item2; objectName: "item2"
- x: 310; y: 10
- width: 100; height: 100; color: "green"
- border.width: 5
- border.color: activeFocus?"blue":"black"
- KeyNavigation.left: item1
- Keys.onDigit9Pressed: console.log("Top Right");
-
- Rectangle {
- width: 50; height: 50; anchors.centerIn: parent
- color: parent.activeFocus?"red":"transparent"
- }
- }
- }
- KeyNavigation.down: item3
- }
-
- Text { x:100; y:170; text: "Blue border indicates scoped focus\nBlack border indicates NOT scoped focus\nRed box indicates active focus\nUse arrow keys to navigate\nPress \"9\" to print currently focused item" }
-
- Rectangle {
- id: item3; objectName: "item3"
- x: 10; y: 300
- width: 100; height: 100; color: "green"
- border.width: 5
- border.color: activeFocus?"blue":"black"
-
- Keys.onDigit9Pressed: console.log("Bottom Left");
- KeyNavigation.up: myScope
-
- Rectangle {
- width: 50; height: 50; anchors.centerIn: parent
- color: parent.activeFocus?"red":"transparent"
- }
- }
-
-}
diff --git a/tests/auto/qtquick2/qquickfocusscope/data/test2.qml b/tests/auto/qtquick2/qquickfocusscope/data/test2.qml
deleted file mode 100644
index ad74f3e9f4..0000000000
--- a/tests/auto/qtquick2/qquickfocusscope/data/test2.qml
+++ /dev/null
@@ -1,39 +0,0 @@
-import QtQuick 2.0
-
-Rectangle {
- color: "white"
- width: 800
- height: 600
-
- Text { text: "All five rectangles should be red" }
-
- FocusScope {
- y: 100
- focus: true; objectName: "item1"
- Rectangle { width: 50; height: 50; color: parent.activeFocus?"red":"blue" }
-
- FocusScope {
- y: 100
- focus: true; objectName: "item2"
- Rectangle { width: 50; height: 50; color: parent.activeFocus?"red":"blue" }
-
- FocusScope {
- y: 100
- focus: true; objectName: "item3"
- Rectangle { width: 50; height: 50; color: parent.activeFocus?"red":"blue" }
-
- FocusScope {
- y: 100
- focus: true; objectName: "item4"
- Rectangle { width: 50; height: 50; color: parent.activeFocus?"red":"blue" }
-
- FocusScope {
- y: 100
- focus: true; objectName: "item5"
- Rectangle { width: 50; height: 50; color: parent.activeFocus?"red":"blue" }
- }
- }
- }
- }
- }
-}
diff --git a/tests/auto/qtquick2/qquickfocusscope/data/test3.qml b/tests/auto/qtquick2/qquickfocusscope/data/test3.qml
deleted file mode 100644
index 537c30816e..0000000000
--- a/tests/auto/qtquick2/qquickfocusscope/data/test3.qml
+++ /dev/null
@@ -1,52 +0,0 @@
-import QtQuick 2.0
-
-Rectangle {
- color: "white"
- width: 800
- height: 600
-
- ListModel {
- id: model
- ListElement { name: "1" }
- ListElement { name: "2" }
- ListElement { name: "3" }
- ListElement { name: "4" }
- ListElement { name: "5" }
- ListElement { name: "6" }
- ListElement { name: "7" }
- ListElement { name: "8" }
- ListElement { name: "9" }
- }
-
- Component {
- id: verticalDelegate
- FocusScope {
- id: root
- width: 50; height: 50;
- Keys.onDigit9Pressed: console.log("Error - " + name)
- Rectangle {
- focus: true
- Keys.onDigit9Pressed: console.log(name)
- width: 50; height: 50;
- color: root.ListView.isCurrentItem?"red":"green"
- Text { text: name; anchors.centerIn: parent }
- }
- }
- }
-
- ListView {
- width: 800; height: 50; orientation: "Horizontal"
- focus: true
- model: model
- delegate: verticalDelegate
- preferredHighlightBegin: 100
- preferredHighlightEnd: 100
- highlightRangeMode: "StrictlyEnforceRange"
- }
-
-
- Text {
- y: 100; x: 50
- text: "Currently selected element should be red\nPressing \"9\" should print the number of the currently selected item\nBe sure to scroll all the way to the right, pause, and then all the way to the left."
- }
-}
diff --git a/tests/auto/qtquick2/qquickfocusscope/data/test4.qml b/tests/auto/qtquick2/qquickfocusscope/data/test4.qml
deleted file mode 100644
index 0eea649f5d..0000000000
--- a/tests/auto/qtquick2/qquickfocusscope/data/test4.qml
+++ /dev/null
@@ -1,76 +0,0 @@
-import QtQuick 2.0
-
-Rectangle {
- color: "white"
- width: 800
- height: 600
-
- Keys.onDigit9Pressed: console.log("Error - Root")
-
- FocusScope {
- id: myScope
-
- Keys.onDigit9Pressed: console.log("Error - FocusScope")
-
- Rectangle {
- objectName: "item0"
- height: 120
- width: 420
-
- color: "transparent"
- border.width: 5
- border.color: myScope.activeFocus?"blue":"black"
-
- Rectangle {
- id: item1; objectName: "item1"
- x: 10; y: 10
- width: 100; height: 100; color: "green"
- border.width: 5
- border.color: activeFocus?"blue":"black"
- Keys.onDigit9Pressed: console.log("Error - Top Left");
- KeyNavigation.right: item2
- focus: true
-
- Rectangle {
- width: 50; height: 50; anchors.centerIn: parent
- color: parent.activeFocus?"red":"transparent"
- }
- }
-
- Rectangle {
- id: item2; objectName: "item2"
- x: 310; y: 10
- width: 100; height: 100; color: "green"
- border.width: 5
- border.color: activeFocus?"blue":"black"
- KeyNavigation.left: item1
- Keys.onDigit9Pressed: console.log("Error - Top Right");
-
- Rectangle {
- width: 50; height: 50; anchors.centerIn: parent
- color: parent.activeFocus?"red":"transparent"
- }
- }
- }
- KeyNavigation.down: item3
- }
-
- Text { x:100; y:170; text: "There should be no blue borders, or red squares.\nPressing \"9\" should do nothing.\nArrow keys should have no effect." }
-
- Rectangle {
- id: item3; objectName: "item3"
- x: 10; y: 300
- width: 100; height: 100; color: "green"
- border.width: 5
- border.color: activeFocus?"blue":"black"
-
- Keys.onDigit9Pressed: console.log("Error - Bottom Left");
- KeyNavigation.up: myScope
-
- Rectangle {
- width: 50; height: 50; anchors.centerIn: parent
- color: parent.activeFocus?"red":"transparent"
- }
- }
-
-}
diff --git a/tests/auto/qtquick2/qquickfocusscope/data/test5.qml b/tests/auto/qtquick2/qquickfocusscope/data/test5.qml
deleted file mode 100644
index 9c37cd1303..0000000000
--- a/tests/auto/qtquick2/qquickfocusscope/data/test5.qml
+++ /dev/null
@@ -1,84 +0,0 @@
-import QtQuick 2.0
-
-Rectangle {
- color: "white"
- width: 800
- height: 600
-
- Keys.onReturnPressed: console.log("Error - Root")
-
- FocusScope {
- id: myScope
- objectName: "item0"
- focus: true
-
- Keys.onReturnPressed: console.log("Error - FocusScope")
-
- Rectangle {
- height: 120
- width: 420
-
- color: "transparent"
- border.width: 5
- border.color: myScope.activeFocus?"blue":"black"
-
- Rectangle {
- x: 10; y: 10
- width: 100; height: 100; color: "green"
- border.width: 5
- border.color: item1.activeFocus?"blue":"black"
- }
-
- TextEdit {
- id: item1; objectName: "item1"
- x: 20; y: 20
- width: 90; height: 90
- color: "white"
- font.pixelSize: 20
- Keys.onReturnPressed: console.log("Top Left");
- KeyNavigation.right: item2
- focus: true
- wrapMode: TextEdit.WordWrap
- text: "Box 1"
- }
-
- Rectangle {
- id: item2; objectName: "item2"
- x: 310; y: 10
- width: 100; height: 100; color: "green"
- border.width: 5
- border.color: activeFocus?"blue":"black"
- KeyNavigation.left: item1
- Keys.onReturnPressed: console.log("Top Right");
-
- Rectangle {
- width: 50; height: 50; anchors.centerIn: parent
- color: parent.activeFocus?"red":"transparent"
- }
- }
- }
- KeyNavigation.down: item3
- }
-
- Text { x:100; y:170; text: "Blue border indicates scoped focus\nBlack border indicates NOT scoped focus\nRed box or flashing cursor indicates active focus\nUse arrow keys to navigate\nPress Ctrl-Return to print currently focused item" }
-
- Rectangle {
- x: 10; y: 300
- width: 100; height: 100; color: "green"
- border.width: 5
- border.color: item3.activeFocus?"blue":"black"
- }
-
- TextEdit {
- id: item3; objectName: "item3"
- x: 20; y: 310
- width: 90; height: 90
- color: "white"
- font.pixelSize: 20
- text: "Box 3"
-
- Keys.onReturnPressed: console.log("Bottom Left");
- KeyNavigation.up: myScope
- wrapMode: TextEdit.WordWrap
- }
-}
diff --git a/tests/auto/qtquick2/qquickfocusscope/qquickfocusscope.pro b/tests/auto/qtquick2/qquickfocusscope/qquickfocusscope.pro
deleted file mode 100644
index d83f6ca7a3..0000000000
--- a/tests/auto/qtquick2/qquickfocusscope/qquickfocusscope.pro
+++ /dev/null
@@ -1,14 +0,0 @@
-CONFIG += testcase
-TARGET = tst_qquickfocusscope
-SOURCES += tst_qquickfocusscope.cpp
-
-include (../../shared/util.pri)
-include (../shared/util.pri)
-
-macx:CONFIG -= app_bundle
-
-testDataFiles.files = data
-testDataFiles.path = .
-DEPLOYMENT += testDataFiles
-
-QT += core-private gui-private declarative-private quick-private testlib
diff --git a/tests/auto/qtquick2/qquickfocusscope/tst_qquickfocusscope.cpp b/tests/auto/qtquick2/qquickfocusscope/tst_qquickfocusscope.cpp
deleted file mode 100644
index 4264c68d92..0000000000
--- a/tests/auto/qtquick2/qquickfocusscope/tst_qquickfocusscope.cpp
+++ /dev/null
@@ -1,636 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <qtest.h>
-#include <QSignalSpy>
-#include <QtDeclarative/qdeclarativeengine.h>
-#include <QtDeclarative/qdeclarativecomponent.h>
-#include <QtQuick/qquickview.h>
-#include <QtQuick/private/qquickrectangle_p.h>
-#include <private/qquicktextedit_p.h>
-#include <QtQuick/private/qquicktext_p.h>
-#include <QtQuick/private/qquickfocusscope_p.h>
-#include "../../shared/util.h"
-#include "../shared/visualtestutil.h"
-
-using namespace QQuickVisualTestUtil;
-
-class tst_qquickfocusscope : public QDeclarativeDataTest
-{
- Q_OBJECT
-public:
- tst_qquickfocusscope() {}
-
-private slots:
- void basic();
- void nested();
- void noFocus();
- void textEdit();
- void forceFocus();
- void noParentFocus();
- void signalEmission();
- void qtBug13380();
- void forceActiveFocus();
- void canvasFocus();
-};
-
-void tst_qquickfocusscope::basic()
-{
- QQuickView *view = new QQuickView;
- view->setSource(testFileUrl("test.qml"));
-
- QQuickFocusScope *item0 = findItem<QQuickFocusScope>(view->rootObject(), QLatin1String("item0"));
- QQuickRectangle *item1 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item1"));
- QQuickRectangle *item2 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item2"));
- QQuickRectangle *item3 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item3"));
- QVERIFY(item0 != 0);
- QVERIFY(item1 != 0);
- QVERIFY(item2 != 0);
- QVERIFY(item3 != 0);
-
- view->show();
- view->requestActivateWindow();
-
- QTest::qWaitForWindowShown(view);
- QTRY_VERIFY(view == qGuiApp->focusWindow());
-
- QVERIFY(view->isTopLevel());
- QVERIFY(item0->hasActiveFocus() == true);
- QVERIFY(item1->hasActiveFocus() == true);
- QVERIFY(item2->hasActiveFocus() == false);
- QVERIFY(item3->hasActiveFocus() == false);
-
- QTest::keyClick(view, Qt::Key_Right);
- QTest::qWait(50);
- QVERIFY(item0->hasActiveFocus() == true);
- QVERIFY(item1->hasActiveFocus() == false);
- QVERIFY(item2->hasActiveFocus() == true);
- QVERIFY(item3->hasActiveFocus() == false);
-
- QTest::keyClick(view, Qt::Key_Down);
- QTest::qWait(50);
- QVERIFY(item0->hasActiveFocus() == false);
- QVERIFY(item1->hasActiveFocus() == false);
- QVERIFY(item2->hasActiveFocus() == false);
- QVERIFY(item3->hasActiveFocus() == true);
-
- delete view;
-}
-
-void tst_qquickfocusscope::nested()
-{
- QQuickView *view = new QQuickView;
- view->setSource(testFileUrl("test2.qml"));
-
- QQuickFocusScope *item1 = findItem<QQuickFocusScope>(view->rootObject(), QLatin1String("item1"));
- QQuickFocusScope *item2 = findItem<QQuickFocusScope>(view->rootObject(), QLatin1String("item2"));
- QQuickFocusScope *item3 = findItem<QQuickFocusScope>(view->rootObject(), QLatin1String("item3"));
- QQuickFocusScope *item4 = findItem<QQuickFocusScope>(view->rootObject(), QLatin1String("item4"));
- QQuickFocusScope *item5 = findItem<QQuickFocusScope>(view->rootObject(), QLatin1String("item5"));
- QVERIFY(item1 != 0);
- QVERIFY(item2 != 0);
- QVERIFY(item3 != 0);
- QVERIFY(item4 != 0);
- QVERIFY(item5 != 0);
-
- view->show();
- view->requestActivateWindow();
-
- QTest::qWaitForWindowShown(view);
- QTRY_VERIFY(view == qGuiApp->focusWindow());
-
- QVERIFY(item1->hasActiveFocus() == true);
- QVERIFY(item2->hasActiveFocus() == true);
- QVERIFY(item3->hasActiveFocus() == true);
- QVERIFY(item4->hasActiveFocus() == true);
- QVERIFY(item5->hasActiveFocus() == true);
- delete view;
-}
-
-void tst_qquickfocusscope::noFocus()
-{
- QQuickView *view = new QQuickView;
- view->setSource(testFileUrl("test4.qml"));
-
- QQuickRectangle *item0 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item0"));
- QQuickRectangle *item1 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item1"));
- QQuickRectangle *item2 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item2"));
- QQuickRectangle *item3 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item3"));
- QVERIFY(item0 != 0);
- QVERIFY(item1 != 0);
- QVERIFY(item2 != 0);
- QVERIFY(item3 != 0);
-
- view->show();
- view->requestActivateWindow();
- QTest::qWaitForWindowShown(view);
- QTRY_VERIFY(view == qGuiApp->focusWindow());
-
- QVERIFY(item0->hasActiveFocus() == false);
- QVERIFY(item1->hasActiveFocus() == false);
- QVERIFY(item2->hasActiveFocus() == false);
- QVERIFY(item3->hasActiveFocus() == false);
-
- QTest::keyClick(view, Qt::Key_Right);
- QVERIFY(item0->hasActiveFocus() == false);
- QVERIFY(item1->hasActiveFocus() == false);
- QVERIFY(item2->hasActiveFocus() == false);
- QVERIFY(item3->hasActiveFocus() == false);
-
- QTest::keyClick(view, Qt::Key_Down);
- QVERIFY(item0->hasActiveFocus() == false);
- QVERIFY(item1->hasActiveFocus() == false);
- QVERIFY(item2->hasActiveFocus() == false);
- QVERIFY(item3->hasActiveFocus() == false);
-
- delete view;
-}
-
-void tst_qquickfocusscope::textEdit()
-{
- QQuickView *view = new QQuickView;
- view->setSource(testFileUrl("test5.qml"));
-
- QQuickFocusScope *item0 = findItem<QQuickFocusScope>(view->rootObject(), QLatin1String("item0"));
- QQuickTextEdit *item1 = findItem<QQuickTextEdit>(view->rootObject(), QLatin1String("item1"));
- QQuickRectangle *item2 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item2"));
- QQuickTextEdit *item3 = findItem<QQuickTextEdit>(view->rootObject(), QLatin1String("item3"));
- QVERIFY(item0 != 0);
- QVERIFY(item1 != 0);
- QVERIFY(item2 != 0);
- QVERIFY(item3 != 0);
-
- view->show();
- view->requestActivateWindow();
-
- QTest::qWaitForWindowShown(view);
-
- QTRY_VERIFY(view == qGuiApp->focusWindow());
- QVERIFY(item0->hasActiveFocus() == true);
- QVERIFY(item1->hasActiveFocus() == true);
- QVERIFY(item2->hasActiveFocus() == false);
- QVERIFY(item3->hasActiveFocus() == false);
-
- QTest::keyClick(view, Qt::Key_Right);
- QVERIFY(item0->hasActiveFocus() == true);
- QVERIFY(item1->hasActiveFocus() == true);
- QVERIFY(item2->hasActiveFocus() == false);
- QVERIFY(item3->hasActiveFocus() == false);
-
- QTest::keyClick(view, Qt::Key_Right);
- QTest::keyClick(view, Qt::Key_Right);
- QTest::keyClick(view, Qt::Key_Right);
- QTest::keyClick(view, Qt::Key_Right);
- QTest::keyClick(view, Qt::Key_Right);
- QVERIFY(item0->hasActiveFocus() == true);
- QVERIFY(item1->hasActiveFocus() == false);
- QVERIFY(item2->hasActiveFocus() == true);
- QVERIFY(item3->hasActiveFocus() == false);
-
- QTest::keyClick(view, Qt::Key_Down);
- QVERIFY(item0->hasActiveFocus() == false);
- QVERIFY(item1->hasActiveFocus() == false);
- QVERIFY(item2->hasActiveFocus() == false);
- QVERIFY(item3->hasActiveFocus() == true);
-
- delete view;
-}
-
-void tst_qquickfocusscope::forceFocus()
-{
- QQuickView *view = new QQuickView;
- view->setSource(testFileUrl("forcefocus.qml"));
-
- QQuickFocusScope *item0 = findItem<QQuickFocusScope>(view->rootObject(), QLatin1String("item0"));
- QQuickRectangle *item1 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item1"));
- QQuickRectangle *item2 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item2"));
- QQuickFocusScope *item3 = findItem<QQuickFocusScope>(view->rootObject(), QLatin1String("item3"));
- QQuickRectangle *item4 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item4"));
- QQuickRectangle *item5 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item5"));
- QVERIFY(item0 != 0);
- QVERIFY(item1 != 0);
- QVERIFY(item2 != 0);
- QVERIFY(item3 != 0);
- QVERIFY(item4 != 0);
- QVERIFY(item5 != 0);
-
- view->show();
- view->requestActivateWindow();
- QTest::qWaitForWindowShown(view);
- QTRY_VERIFY(view == qGuiApp->focusWindow());
-
- QVERIFY(item0->hasActiveFocus() == true);
- QVERIFY(item1->hasActiveFocus() == true);
- QVERIFY(item2->hasActiveFocus() == false);
- QVERIFY(item3->hasActiveFocus() == false);
- QVERIFY(item4->hasActiveFocus() == false);
- QVERIFY(item5->hasActiveFocus() == false);
-
- QTest::keyClick(view, Qt::Key_4);
- QVERIFY(item0->hasActiveFocus() == true);
- QVERIFY(item1->hasActiveFocus() == true);
- QVERIFY(item2->hasActiveFocus() == false);
- QVERIFY(item3->hasActiveFocus() == false);
- QVERIFY(item4->hasActiveFocus() == false);
- QVERIFY(item5->hasActiveFocus() == false);
-
- QTest::keyClick(view, Qt::Key_5);
- QVERIFY(item0->hasActiveFocus() == false);
- QVERIFY(item1->hasActiveFocus() == false);
- QVERIFY(item2->hasActiveFocus() == false);
- QVERIFY(item3->hasActiveFocus() == true);
- QVERIFY(item4->hasActiveFocus() == false);
- QVERIFY(item5->hasActiveFocus() == true);
-
- delete view;
-}
-
-void tst_qquickfocusscope::noParentFocus()
-{
- QQuickView *view = new QQuickView;
- view->setSource(testFileUrl("chain.qml"));
- QVERIFY(view->rootObject());
-
- view->show();
- view->requestActivateWindow();
- QTest::qWaitForWindowShown(view);
- QTRY_VERIFY(view == qGuiApp->focusWindow());
-
- QVERIFY(view->rootObject()->property("focus1") == false);
- QVERIFY(view->rootObject()->property("focus2") == false);
- QVERIFY(view->rootObject()->property("focus3") == true);
- QVERIFY(view->rootObject()->property("focus4") == true);
- QVERIFY(view->rootObject()->property("focus5") == true);
-
- delete view;
-}
-
-void tst_qquickfocusscope::signalEmission()
-{
- QQuickView *view = new QQuickView;
- view->setSource(testFileUrl("signalEmission.qml"));
-
- QQuickRectangle *item1 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item1"));
- QQuickRectangle *item2 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item2"));
- QQuickRectangle *item3 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item3"));
- QQuickRectangle *item4 = findItem<QQuickRectangle>(view->rootObject(), QLatin1String("item4"));
- QVERIFY(item1 != 0);
- QVERIFY(item2 != 0);
- QVERIFY(item3 != 0);
- QVERIFY(item4 != 0);
-
- view->show();
- view->requestActivateWindow();
-
- QTest::qWaitForWindowShown(view);
- QTRY_VERIFY(view == qGuiApp->focusWindow());
-
- QVariant blue(QColor("blue"));
- QVariant red(QColor("red"));
-
- item1->setFocus(true);
- QCOMPARE(item1->property("color"), red);
- QCOMPARE(item2->property("color"), blue);
- QCOMPARE(item3->property("color"), blue);
- QCOMPARE(item4->property("color"), blue);
-
- item2->setFocus(true);
- QCOMPARE(item1->property("color"), blue);
- QCOMPARE(item2->property("color"), red);
- QCOMPARE(item3->property("color"), blue);
- QCOMPARE(item4->property("color"), blue);
-
- item3->setFocus(true);
- QCOMPARE(item1->property("color"), blue);
- QCOMPARE(item2->property("color"), red);
- QCOMPARE(item3->property("color"), red);
- QCOMPARE(item4->property("color"), blue);
-
- item4->setFocus(true);
- QCOMPARE(item1->property("color"), blue);
- QCOMPARE(item2->property("color"), red);
- QCOMPARE(item3->property("color"), blue);
- QCOMPARE(item4->property("color"), red);
-
- item4->setFocus(false);
- QCOMPARE(item1->property("color"), blue);
- QCOMPARE(item2->property("color"), red);
- QCOMPARE(item3->property("color"), blue);
- QCOMPARE(item4->property("color"), blue);
-
- delete view;
-}
-
-void tst_qquickfocusscope::qtBug13380()
-{
- QQuickView *view = new QQuickView;
- view->setSource(testFileUrl("qtBug13380.qml"));
-
- view->show();
- QVERIFY(view->rootObject());
- view->requestActivateWindow();
- qApp->processEvents();
-
- QTest::qWaitForWindowShown(view);
-
- QTRY_VERIFY(view == qGuiApp->focusWindow());
- QVERIFY(view->rootObject()->property("noFocus").toBool());
-
- view->rootObject()->setProperty("showRect", true);
- QVERIFY(view->rootObject()->property("noFocus").toBool());
-
- delete view;
-}
-
-void tst_qquickfocusscope::forceActiveFocus()
-{
- QQuickView *view = new QQuickView;
- view->setSource(testFileUrl("forceActiveFocus.qml"));
-
- view->show();
- view->requestActivateWindow();
- QTest::qWaitForWindowShown(view);
- QTRY_VERIFY(view == qGuiApp->focusWindow());
-
- QQuickItem *rootObject = view->rootObject();
- QVERIFY(rootObject);
-
- QQuickItem *scope = findItem<QQuickItem>(rootObject, QLatin1String("scope"));
- QQuickItem *itemA1 = findItem<QQuickItem>(rootObject, QLatin1String("item-a1"));
- QQuickItem *scopeA = findItem<QQuickItem>(rootObject, QLatin1String("scope-a"));
- QQuickItem *itemA2 = findItem<QQuickItem>(rootObject, QLatin1String("item-a2"));
- QQuickItem *itemB1 = findItem<QQuickItem>(rootObject, QLatin1String("item-b1"));
- QQuickItem *scopeB = findItem<QQuickItem>(rootObject, QLatin1String("scope-b"));
- QQuickItem *itemB2 = findItem<QQuickItem>(rootObject, QLatin1String("item-b2"));
-
- QVERIFY(scope);
- QVERIFY(itemA1);
- QVERIFY(scopeA);
- QVERIFY(itemA2);
- QVERIFY(itemB1);
- QVERIFY(scopeB);
- QVERIFY(itemB2);
-
- QSignalSpy rootSpy(rootObject, SIGNAL(activeFocusChanged(bool)));
- QSignalSpy scopeSpy(scope, SIGNAL(activeFocusChanged(bool)));
- QSignalSpy scopeASpy(scopeA, SIGNAL(activeFocusChanged(bool)));
- QSignalSpy scopeBSpy(scopeB, SIGNAL(activeFocusChanged(bool)));
-
- // First, walk the focus from item-a1 down to item-a2 and back again
- itemA1->forceActiveFocus();
- QVERIFY(itemA1->hasActiveFocus());
- QVERIFY(!rootObject->hasActiveFocus());
- QCOMPARE(rootSpy.count(), 0);
- QCOMPARE(scopeSpy.count(), 1);
-
- scopeA->forceActiveFocus();
- QVERIFY(!itemA1->hasActiveFocus());
- QVERIFY(scopeA->hasActiveFocus());
- QCOMPARE(scopeASpy.count(), 1);
- QCOMPARE(rootSpy.count(), 0);
- QCOMPARE(scopeSpy.count(), 1);
-
- itemA2->forceActiveFocus();
- QVERIFY(!itemA1->hasActiveFocus());
- QVERIFY(itemA2->hasActiveFocus());
- QVERIFY(scopeA->hasActiveFocus());
- QCOMPARE(scopeASpy.count(), 1);
- QCOMPARE(rootSpy.count(), 0);
- QCOMPARE(scopeSpy.count(), 1);
-
- scopeA->forceActiveFocus();
- QVERIFY(!itemA1->hasActiveFocus());
- QVERIFY(itemA2->hasActiveFocus());
- QVERIFY(scopeA->hasActiveFocus());
- QCOMPARE(scopeASpy.count(), 1);
- QCOMPARE(rootSpy.count(), 0);
- QCOMPARE(scopeSpy.count(), 1);
-
- itemA1->forceActiveFocus();
- QVERIFY(itemA1->hasActiveFocus());
- QVERIFY(!scopeA->hasActiveFocus());
- QVERIFY(!itemA2->hasActiveFocus());
- QCOMPARE(scopeASpy.count(), 2);
- QCOMPARE(rootSpy.count(), 0);
- QCOMPARE(scopeSpy.count(), 1);
-
- // Then jump back and forth between branch 'a' and 'b'
- itemB1->forceActiveFocus();
- QVERIFY(itemB1->hasActiveFocus());
- QCOMPARE(rootSpy.count(), 0);
- QCOMPARE(scopeSpy.count(), 1);
-
- scopeA->forceActiveFocus();
- QVERIFY(!itemA1->hasActiveFocus());
- QVERIFY(!itemB1->hasActiveFocus());
- QVERIFY(scopeA->hasActiveFocus());
- QCOMPARE(scopeASpy.count(), 3);
- QCOMPARE(rootSpy.count(), 0);
- QCOMPARE(scopeSpy.count(), 1);
-
- scopeB->forceActiveFocus();
- QVERIFY(!scopeA->hasActiveFocus());
- QVERIFY(!itemB1->hasActiveFocus());
- QVERIFY(scopeB->hasActiveFocus());
- QCOMPARE(scopeASpy.count(), 4);
- QCOMPARE(scopeBSpy.count(), 1);
- QCOMPARE(rootSpy.count(), 0);
- QCOMPARE(scopeSpy.count(), 1);
-
- itemA2->forceActiveFocus();
- QVERIFY(!scopeB->hasActiveFocus());
- QVERIFY(itemA2->hasActiveFocus());
- QCOMPARE(scopeASpy.count(), 5);
- QCOMPARE(scopeBSpy.count(), 2);
- QCOMPARE(rootSpy.count(), 0);
- QCOMPARE(scopeSpy.count(), 1);
-
- itemB2->forceActiveFocus();
- QVERIFY(!itemA2->hasActiveFocus());
- QVERIFY(itemB2->hasActiveFocus());
- QCOMPARE(scopeASpy.count(), 6);
- QCOMPARE(scopeBSpy.count(), 3);
- QCOMPARE(rootSpy.count(), 0);
- QCOMPARE(scopeSpy.count(), 1);
-
- delete view;
-}
-
-void tst_qquickfocusscope::canvasFocus()
-{
- QQuickView *view = new QQuickView;
- view->setSource(testFileUrl("canvasFocus.qml"));
-
- QQuickView alternateView;
-
- QQuickItem *rootObject = view->rootObject();
- QVERIFY(rootObject);
-
- QQuickItem *rootItem = view->rootItem();
- QQuickItem *scope1 = findItem<QQuickItem>(rootObject, QLatin1String("scope1"));
- QQuickItem *item1 = findItem<QQuickItem>(rootObject, QLatin1String("item1"));
- QQuickItem *scope2 = findItem<QQuickItem>(rootObject, QLatin1String("scope2"));
- QQuickItem *item2 = findItem<QQuickItem>(rootObject, QLatin1String("item2"));
-
- QVERIFY(scope1);
- QVERIFY(item1);
- QVERIFY(scope2);
- QVERIFY(item2);
-
- QSignalSpy rootFocusSpy(rootItem, SIGNAL(focusChanged(bool)));
- QSignalSpy scope1FocusSpy(scope1, SIGNAL(focusChanged(bool)));
- QSignalSpy item1FocusSpy(item1, SIGNAL(focusChanged(bool)));
- QSignalSpy scope2FocusSpy(scope2, SIGNAL(focusChanged(bool)));
- QSignalSpy item2FocusSpy(item2, SIGNAL(focusChanged(bool)));
- QSignalSpy rootActiveFocusSpy(rootItem, SIGNAL(activeFocusChanged(bool)));
- QSignalSpy scope1ActiveFocusSpy(scope1, SIGNAL(activeFocusChanged(bool)));
- QSignalSpy item1ActiveFocusSpy(item1, SIGNAL(activeFocusChanged(bool)));
- QSignalSpy scope2ActiveFocusSpy(scope2, SIGNAL(activeFocusChanged(bool)));
- QSignalSpy item2ActiveFocusSpy(item2, SIGNAL(activeFocusChanged(bool)));
-
- QEXPECT_FAIL("", "QTBUG-22415", Abort);
- QCOMPARE(rootItem->hasFocus(), false);
- QCOMPARE(rootItem->hasActiveFocus(), false);
- QCOMPARE(scope1->hasFocus(), true);
- QCOMPARE(scope1->hasActiveFocus(), false);
- QCOMPARE(item1->hasFocus(), true);
- QCOMPARE(item1->hasActiveFocus(), false);
- QCOMPARE(scope2->hasFocus(), false);
- QCOMPARE(scope2->hasActiveFocus(), false);
- QCOMPARE(item2->hasFocus(), false);
- QCOMPARE(item2->hasActiveFocus(), false);
-
- view->show();
- view->requestActivateWindow();
-
- QTest::qWaitForWindowShown(view);
- QTRY_VERIFY(view == qGuiApp->focusWindow());
-
- // Now the canvas has focus, active focus given to item1
- QCOMPARE(rootItem->hasFocus(), true);
- QCOMPARE(rootItem->hasActiveFocus(), true);
- QCOMPARE(scope1->hasFocus(), true);
- QCOMPARE(scope1->hasActiveFocus(), true);
- QCOMPARE(item1->hasFocus(), true);
- QCOMPARE(item1->hasActiveFocus(), true);
- QCOMPARE(scope2->hasFocus(), false);
- QCOMPARE(scope2->hasActiveFocus(), false);
- QCOMPARE(item2->hasFocus(), false);
- QCOMPARE(item2->hasActiveFocus(), false);
-
- QCOMPARE(rootFocusSpy.count(), 1);
- QCOMPARE(rootActiveFocusSpy.count(), 1);
- QCOMPARE(scope1FocusSpy.count(), 0);
- QCOMPARE(scope1ActiveFocusSpy.count(), 1);
- QCOMPARE(item1FocusSpy.count(), 0);
- QCOMPARE(item1ActiveFocusSpy.count(), 1);
-
-
- // view->hide(); // seemingly doesn't remove focus, so have an another view steal it.
- alternateView.show();
- alternateView.requestActivateWindow();
- QTest::qWaitForWindowShown(&alternateView);
- QTRY_VERIFY(QGuiApplication::focusWindow() == &alternateView);
-
- QCOMPARE(rootItem->hasFocus(), false);
- QCOMPARE(rootItem->hasActiveFocus(), false);
- QCOMPARE(scope1->hasFocus(), true);
- QCOMPARE(scope1->hasActiveFocus(), false);
- QCOMPARE(item1->hasFocus(), true);
- QCOMPARE(item1->hasActiveFocus(), false);
-
- QCOMPARE(rootFocusSpy.count(), 2);
- QCOMPARE(rootActiveFocusSpy.count(), 2);
- QCOMPARE(scope1FocusSpy.count(), 0);
- QCOMPARE(scope1ActiveFocusSpy.count(), 2);
- QCOMPARE(item1FocusSpy.count(), 0);
- QCOMPARE(item1ActiveFocusSpy.count(), 2);
-
-
- // canvas does not have focus, so item2 will not get active focus
- item2->forceActiveFocus();
-
- QCOMPARE(rootItem->hasFocus(), false);
- QCOMPARE(rootItem->hasActiveFocus(), false);
- QCOMPARE(scope1->hasFocus(), false);
- QCOMPARE(scope1->hasActiveFocus(), false);
- QCOMPARE(item1->hasFocus(), true);
- QCOMPARE(item1->hasActiveFocus(), false);
- QCOMPARE(scope2->hasFocus(), true);
- QCOMPARE(scope2->hasActiveFocus(), false);
- QCOMPARE(item2->hasFocus(), true);
- QCOMPARE(item2->hasActiveFocus(), false);
-
- QCOMPARE(rootFocusSpy.count(), 2);
- QCOMPARE(rootActiveFocusSpy.count(), 2);
- QCOMPARE(scope1FocusSpy.count(), 1);
- QCOMPARE(scope1ActiveFocusSpy.count(), 2);
- QCOMPARE(item1FocusSpy.count(), 0);
- QCOMPARE(item1ActiveFocusSpy.count(), 2);
- QCOMPARE(scope2FocusSpy.count(), 1);
- QCOMPARE(scope2ActiveFocusSpy.count(), 0);
- QCOMPARE(item2FocusSpy.count(), 1);
- QCOMPARE(item2ActiveFocusSpy.count(), 0);
-
- // give the canvas focus, and item2 will get active focus
- view->show();
- view->requestActivateWindow();
- QTest::qWaitForWindowShown(view);
- QTRY_VERIFY(QGuiApplication::focusWindow() == view);
-
- QCOMPARE(rootItem->hasFocus(), true);
- QCOMPARE(rootItem->hasActiveFocus(), true);
- QCOMPARE(scope2->hasFocus(), true);
- QCOMPARE(scope2->hasActiveFocus(), true);
- QCOMPARE(item2->hasFocus(), true);
- QCOMPARE(item2->hasActiveFocus(), true);
- QCOMPARE(rootFocusSpy.count(), 3);
- QCOMPARE(rootActiveFocusSpy.count(), 3);
- QCOMPARE(scope2FocusSpy.count(), 1);
- QCOMPARE(scope2ActiveFocusSpy.count(), 1);
- QCOMPARE(item2FocusSpy.count(), 1);
- QCOMPARE(item2ActiveFocusSpy.count(), 1);
-
- delete view;
-}
-
-QTEST_MAIN(tst_qquickfocusscope)
-
-#include "tst_qquickfocusscope.moc"