aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAndrew den Exter <andrew.den-exter@nokia.com>2012-06-07 12:29:07 +1000
committerQt by Nokia <qt-info@nokia.com>2012-06-08 06:17:54 +0200
commit04b4445eadb09873821f165074c72c6f477e18d2 (patch)
tree9910c1aae2d5af7b6897fc4780e01be513719533 /tests
parent762b4d90110465aeceb96f44cd06dcda229dfe89 (diff)
Fix handling of a direct child stealing focus from a parent-less item.
When an item gains focus it will remove focus from the previous item that held focus. Normally this is the sub-focus item of an ancestor item, however if the item with focus is at the root of the tree there will be no sub-focus item and the focus of root item needs to be cleared instead. Likewise if an item doesn't have a parent, focus still needs to be removed from any sub focus item. Change-Id: I0f192692e21e288c87ba0104f3d597363190f87c Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/quick/qquickitem/tst_qquickitem.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/tests/auto/quick/qquickitem/tst_qquickitem.cpp b/tests/auto/quick/qquickitem/tst_qquickitem.cpp
index 8f4a03b0fb..47f9ff4fed 100644
--- a/tests/auto/quick/qquickitem/tst_qquickitem.cpp
+++ b/tests/auto/quick/qquickitem/tst_qquickitem.cpp
@@ -203,7 +203,7 @@ void tst_qquickitem::noCanvas()
root->setFocus(true);
scope->setFocus(true);
scopedChild2->setFocus(true);
- QCOMPARE(root->hasFocus(), true);
+ QCOMPARE(root->hasFocus(), false);
QCOMPARE(child->hasFocus(), false);
QCOMPARE(scope->hasFocus(), false);
QCOMPARE(scopedChild->hasFocus(), false);
@@ -822,6 +822,32 @@ void tst_qquickitem::parentItemWithFocus()
focusState.active(&grandchild);
FVERIFY();
}
+
+ {
+ QQuickItem parent;
+ QQuickItem child1;
+ QQuickItem child2;
+
+ FocusState focusState;
+ focusState << &parent << &child1 << &child2;
+ parent.setFocus(true);
+ child1.setParentItem(&parent);
+ child2.setParentItem(&parent);
+ focusState[&parent].set(true, false);
+ focusState[&child1].set(false, false);
+ focusState[&child2].set(false, false);
+ FVERIFY();
+
+ child1.setFocus(true);
+ focusState[&parent].set(false, false);
+ focusState[&child1].set(true, false);
+ FVERIFY();
+
+ parent.setFocus(true);
+ focusState[&parent].set(true, false);
+ focusState[&child1].set(false, false);
+ FVERIFY();
+ }
}
void tst_qquickitem::reparentFocusedItem()