diff options
Diffstat (limited to 'tests/auto/quick/qquickitem2')
5 files changed, 263 insertions, 55 deletions
diff --git a/tests/auto/quick/qquickitem2/data/childrenRectBottomRightCorner.qml b/tests/auto/quick/qquickitem2/data/childrenRectBottomRightCorner.qml new file mode 100644 index 0000000000..0b83e20b20 --- /dev/null +++ b/tests/auto/quick/qquickitem2/data/childrenRectBottomRightCorner.qml @@ -0,0 +1,47 @@ +import QtQuick 2.0 + +Item { + width: 300 + height: 300 + + Item { + anchors.centerIn: parent + + Rectangle { + objectName: "childrenRectProxy" + x: container.childrenRect.x + y: container.childrenRect.y + width: container.childrenRect.width + height: container.childrenRect.height + color: "red" + opacity: 0.5 + } + + Item { + id: container + + Rectangle { + x: -100 + y: -100 + width: 10 + height: 10 + color: "red" + } + + Rectangle { + x: -60 + y: -60 + width: 10 + height: 10 + color: "red" + } + } + + Rectangle { + id: origin + width: 5 + height: 5 + color: "black" + } + } +} diff --git a/tests/auto/quick/qquickitem2/data/mapCoordinates.qml b/tests/auto/quick/qquickitem2/data/mapCoordinates.qml index 0b0b15a767..a9c5030e12 100644 --- a/tests/auto/quick/qquickitem2/data/mapCoordinates.qml +++ b/tests/auto/quick/qquickitem2/data/mapCoordinates.qml @@ -65,12 +65,20 @@ Item { } function checkMapAToInvalid(x, y) { - var pos = itemA.mapToItem(1122, x, y) - return pos == undefined; + try { + itemA.mapToItem(1122, x, y) + } catch (e) { + return e instanceof TypeError + } + return false } function checkMapAFromInvalid(x, y) { - var pos = itemA.mapFromItem(1122, x, y) - return pos == undefined; + try { + itemA.mapFromItem(1122, x, y) + } catch (e) { + return e instanceof TypeError + } + return false } } diff --git a/tests/auto/quick/qquickitem2/data/mapCoordinatesRect.qml b/tests/auto/quick/qquickitem2/data/mapCoordinatesRect.qml index e21aab1f01..c127407eae 100644 --- a/tests/auto/quick/qquickitem2/data/mapCoordinatesRect.qml +++ b/tests/auto/quick/qquickitem2/data/mapCoordinatesRect.qml @@ -66,12 +66,20 @@ Item { } function checkMapAToInvalid(x, y, w, h) { - var pos = itemA.mapToItem(1122, x, y, w, h) - return pos == undefined; + try { + itemA.mapToItem(1122, x, y, w, h) + } catch (e) { + return e instanceof TypeError + } + return false; } function checkMapAFromInvalid(x, y, w, h) { - var pos = itemA.mapFromItem(1122, x, y, w, h) - return pos == undefined; + try { + itemA.mapFromItem(1122, x, y, w, h) + } catch (e) { + return e instanceof TypeError + } + return false; } } diff --git a/tests/auto/quick/qquickitem2/data/tabFence.qml b/tests/auto/quick/qquickitem2/data/tabFence.qml new file mode 100644 index 0000000000..fcf69b418b --- /dev/null +++ b/tests/auto/quick/qquickitem2/data/tabFence.qml @@ -0,0 +1,49 @@ +import QtQuick 2.1 +import Test 1.0 + +Item { + objectName: "root" + focus: true + width: 800 + height: 600 + + TabFence { + objectName: "fence1" + + TextInput { + objectName: "input11" + activeFocusOnTab: true + } + TextInput { + objectName: "input12" + activeFocusOnTab: true + } + TextInput { + objectName: "input13" + activeFocusOnTab: true + } + } + + TextInput { + objectName: "input1" + activeFocusOnTab: true + } + + TextInput { + objectName: "input2" + activeFocusOnTab: true + } + + TabFence { + objectName: "fence2" + } + + TextInput { + objectName: "input3" + activeFocusOnTab: true + } + + TabFence { + objectName: "fence3" + } +} diff --git a/tests/auto/quick/qquickitem2/tst_qquickitem.cpp b/tests/auto/quick/qquickitem2/tst_qquickitem.cpp index f3333df60d..c7717b9cca 100644 --- a/tests/auto/quick/qquickitem2/tst_qquickitem.cpp +++ b/tests/auto/quick/qquickitem2/tst_qquickitem.cpp @@ -73,6 +73,8 @@ private slots: void nextItemInFocusChain2(); void nextItemInFocusChain3(); + void tabFence(); + void keys(); void standardKeys_data(); void standardKeys(); @@ -102,6 +104,7 @@ private slots: void childrenRectBug(); void childrenRectBug2(); void childrenRectBug3(); + void childrenRectBottomRightCorner(); void childrenProperty(); void resourcesProperty(); @@ -290,6 +293,20 @@ private: QML_DECLARE_TYPE(HollowTestItem); +class TabFenceItem : public QQuickItem +{ + Q_OBJECT + +public: + TabFenceItem(QQuickItem *parent = Q_NULLPTR) + : QQuickItem(parent) + { + QQuickItemPrivate *d = QQuickItemPrivate::get(this); + d->isTabFence = true; + } +}; + +QML_DECLARE_TYPE(TabFenceItem); tst_QQuickItem::tst_QQuickItem() { @@ -300,6 +317,7 @@ void tst_QQuickItem::initTestCase() QQmlDataTest::initTestCase(); qmlRegisterType<KeyTestItem>("Test",1,0,"KeyTestItem"); qmlRegisterType<HollowTestItem>("Test", 1, 0, "HollowTestItem"); + qmlRegisterType<TabFenceItem>("Test", 1, 0, "TabFence"); } void tst_QQuickItem::cleanup() @@ -320,7 +338,7 @@ void tst_QQuickItem::activeFocusOnTab() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); // original: button12 QQuickItem *item = findItem<QQuickItem>(window->rootObject(), "button12"); @@ -432,7 +450,7 @@ void tst_QQuickItem::activeFocusOnTab2() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); // original: button12 QQuickItem *item = findItem<QQuickItem>(window->rootObject(), "button12"); @@ -472,7 +490,7 @@ void tst_QQuickItem::activeFocusOnTab3() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); // original: button1 QQuickItem *item = findItem<QQuickItem>(window->rootObject(), "button1"); @@ -654,7 +672,7 @@ void tst_QQuickItem::activeFocusOnTab4() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); // original: button11 QQuickItem *item = findItem<QQuickItem>(window->rootObject(), "button11"); @@ -686,7 +704,7 @@ void tst_QQuickItem::activeFocusOnTab5() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); // original: button11 in sub1 QQuickItem *item = findItem<QQuickItem>(window->rootObject(), "button11"); @@ -720,7 +738,7 @@ void tst_QQuickItem::activeFocusOnTab6() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); // original: button12 QQuickItem *item = findItem<QQuickItem>(window->rootObject(), "button12"); @@ -778,7 +796,7 @@ void tst_QQuickItem::activeFocusOnTab7() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); QQuickItem *item = findItem<QQuickItem>(window->rootObject(), "button1"); QVERIFY(item); @@ -811,7 +829,7 @@ void tst_QQuickItem::activeFocusOnTab8() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); QQuickItem *content = window->contentItem(); QVERIFY(content); @@ -863,7 +881,7 @@ void tst_QQuickItem::activeFocusOnTab9() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); QQuickItem *content = window->contentItem(); QVERIFY(content); @@ -914,7 +932,7 @@ void tst_QQuickItem::activeFocusOnTab10() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); QQuickItem *content = window->contentItem(); QVERIFY(content); @@ -997,7 +1015,7 @@ void tst_QQuickItem::nextItemInFocusChain() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); QQuickItem *button11 = findItem<QQuickItem>(window->rootObject(), "button11"); QVERIFY(button11); @@ -1073,7 +1091,7 @@ void tst_QQuickItem::nextItemInFocusChain2() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); QQuickItem *button11 = findItem<QQuickItem>(window->rootObject(), "button11"); QVERIFY(button11); @@ -1118,7 +1136,62 @@ void tst_QQuickItem::nextItemInFocusChain3() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); + QCOMPARE(QGuiApplication::focusWindow(), window); +} + +void verifyTabFocusChain(QQuickView *window, const char **focusChain, bool forward) +{ + int idx = 0; + for (const char **objectName = focusChain; *objectName; ++objectName, ++idx) { + const QString &descrStr = QString("idx=%1 objectName=\"%2\"").arg(idx).arg(*objectName); + const char *descr = descrStr.toLocal8Bit().data(); + QKeyEvent key(QEvent::KeyPress, Qt::Key_Tab, forward ? Qt::NoModifier : Qt::ShiftModifier); + QGuiApplication::sendEvent(window, &key); + QVERIFY2(key.isAccepted(), descr); + + QQuickItem *item = findItem<QQuickItem>(window->rootObject(), *objectName); + QVERIFY2(item, descr); + QVERIFY2(item->hasActiveFocus(), descr); + } +} + +void tst_QQuickItem::tabFence() +{ + QQuickView *window = new QQuickView(0); + window->setBaseSize(QSize(800,600)); + + window->setSource(testFileUrl("tabFence.qml")); + window->show(); + window->requestActivate(); + QVERIFY(QTest::qWaitForWindowActive(window)); QVERIFY(QGuiApplication::focusWindow() == window); + QVERIFY(window->rootObject()->hasActiveFocus()); + + const char *rootTabFocusChain[] = { + "input1", "input2", "input3", "input1", Q_NULLPTR + }; + verifyTabFocusChain(window, rootTabFocusChain, true /* forward */); + + const char *rootBacktabFocusChain[] = { + "input3", "input2", "input1", "input3", Q_NULLPTR + }; + verifyTabFocusChain(window, rootBacktabFocusChain, false /* forward */); + + // Give focus to input11 in fence1 + QQuickItem *item = findItem<QQuickItem>(window->rootObject(), "input11"); + item->setFocus(true); + QVERIFY(item); + QVERIFY(item->hasActiveFocus()); + + const char *fence1TabFocusChain[] = { + "input12", "input13", "input11", "input12", Q_NULLPTR + }; + verifyTabFocusChain(window, fence1TabFocusChain, true /* forward */); + + const char *fence1BacktabFocusChain[] = { + "input11", "input13", "input12", "input11", Q_NULLPTR + }; + verifyTabFocusChain(window, fence1BacktabFocusChain, false /* forward */); } void tst_QQuickItem::keys() @@ -1136,7 +1209,7 @@ void tst_QQuickItem::keys() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); QVERIFY(window->rootObject()); QCOMPARE(window->rootObject()->property("isEnabled").toBool(), true); @@ -1146,7 +1219,7 @@ void tst_QQuickItem::keys() QCOMPARE(testObject->mKey, int(Qt::Key_A)); QCOMPARE(testObject->mForwardedKey, int(Qt::Key_A)); QCOMPARE(testObject->mText, QLatin1String("A")); - QVERIFY(testObject->mModifiers == Qt::NoModifier); + QCOMPARE(testObject->mModifiers, int(Qt::NoModifier)); QVERIFY(!key.isAccepted()); testObject->reset(); @@ -1156,7 +1229,7 @@ void tst_QQuickItem::keys() QCOMPARE(testObject->mKey, int(Qt::Key_A)); QCOMPARE(testObject->mForwardedKey, int(Qt::Key_A)); QCOMPARE(testObject->mText, QLatin1String("A")); - QVERIFY(testObject->mModifiers == Qt::ShiftModifier); + QCOMPARE(testObject->mModifiers, int(Qt::ShiftModifier)); QVERIFY(key.isAccepted()); testObject->reset(); @@ -1166,7 +1239,7 @@ void tst_QQuickItem::keys() QCOMPARE(testObject->mKey, int(Qt::Key_Return)); QCOMPARE(testObject->mForwardedKey, int(Qt::Key_Return)); QCOMPARE(testObject->mText, QLatin1String("Return")); - QVERIFY(testObject->mModifiers == Qt::NoModifier); + QCOMPARE(testObject->mModifiers, int(Qt::NoModifier)); QVERIFY(key.isAccepted()); testObject->reset(); @@ -1176,7 +1249,7 @@ void tst_QQuickItem::keys() QCOMPARE(testObject->mKey, int(Qt::Key_0)); QCOMPARE(testObject->mForwardedKey, int(Qt::Key_0)); QCOMPARE(testObject->mText, QLatin1String("0")); - QVERIFY(testObject->mModifiers == Qt::NoModifier); + QCOMPARE(testObject->mModifiers, int(Qt::NoModifier)); QVERIFY(key.isAccepted()); testObject->reset(); @@ -1186,7 +1259,7 @@ void tst_QQuickItem::keys() QCOMPARE(testObject->mKey, int(Qt::Key_9)); QCOMPARE(testObject->mForwardedKey, int(Qt::Key_9)); QCOMPARE(testObject->mText, QLatin1String("9")); - QVERIFY(testObject->mModifiers == Qt::NoModifier); + QCOMPARE(testObject->mModifiers, int(Qt::NoModifier)); QVERIFY(!key.isAccepted()); testObject->reset(); @@ -1196,7 +1269,7 @@ void tst_QQuickItem::keys() QCOMPARE(testObject->mKey, int(Qt::Key_Tab)); QCOMPARE(testObject->mForwardedKey, int(Qt::Key_Tab)); QCOMPARE(testObject->mText, QLatin1String("Tab")); - QVERIFY(testObject->mModifiers == Qt::NoModifier); + QCOMPARE(testObject->mModifiers, int(Qt::NoModifier)); QVERIFY(key.isAccepted()); testObject->reset(); @@ -1206,7 +1279,7 @@ void tst_QQuickItem::keys() QCOMPARE(testObject->mKey, int(Qt::Key_Backtab)); QCOMPARE(testObject->mForwardedKey, int(Qt::Key_Backtab)); QCOMPARE(testObject->mText, QLatin1String("Backtab")); - QVERIFY(testObject->mModifiers == Qt::NoModifier); + QCOMPARE(testObject->mModifiers, int(Qt::NoModifier)); QVERIFY(key.isAccepted()); testObject->reset(); @@ -1215,8 +1288,8 @@ void tst_QQuickItem::keys() QGuiApplication::sendEvent(window, &key); QCOMPARE(testObject->mKey, int(Qt::Key_VolumeUp)); QCOMPARE(testObject->mForwardedKey, int(Qt::Key_VolumeUp)); - QVERIFY(testObject->mModifiers == Qt::NoModifier); - QVERIFY(testObject->mNativeScanCode == 1234); + QCOMPARE(testObject->mModifiers, int(Qt::NoModifier)); + QCOMPARE(testObject->mNativeScanCode, quint32(1234)); QVERIFY(key.isAccepted()); testObject->reset(); @@ -1227,7 +1300,7 @@ void tst_QQuickItem::keys() QCOMPARE(testObject->mKey, int(Qt::Key_A)); QCOMPARE(testObject->mForwardedKey, 0); QCOMPARE(testObject->mText, QLatin1String("A")); - QVERIFY(testObject->mModifiers == Qt::NoModifier); + QCOMPARE(testObject->mModifiers, int(Qt::NoModifier)); QVERIFY(!key.isAccepted()); testObject->reset(); @@ -1322,7 +1395,7 @@ void tst_QQuickItem::keysProcessingOrder() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); KeyTestItem *testItem = qobject_cast<KeyTestItem*>(window->rootObject()); QVERIFY(testItem); @@ -1333,7 +1406,7 @@ void tst_QQuickItem::keysProcessingOrder() QGuiApplication::sendEvent(window, &key); QCOMPARE(testObject->mKey, int(Qt::Key_A)); QCOMPARE(testObject->mText, QLatin1String("A")); - QVERIFY(testObject->mModifiers == Qt::NoModifier); + QCOMPARE(testObject->mModifiers, int(Qt::NoModifier)); QVERIFY(key.isAccepted()); testObject->reset(); @@ -1353,7 +1426,7 @@ void tst_QQuickItem::keysProcessingOrder() QGuiApplication::sendEvent(window, &key); QCOMPARE(testObject->mKey, int(Qt::Key_B)); QCOMPARE(testObject->mText, QLatin1String("B")); - QVERIFY(testObject->mModifiers == Qt::NoModifier); + QCOMPARE(testObject->mModifiers, int(Qt::NoModifier)); QVERIFY(!key.isAccepted()); testObject->reset(); @@ -1380,7 +1453,7 @@ void tst_QQuickItem::keysim() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); QVERIFY(window->rootObject()); QVERIFY(window->rootObject()->hasFocus() && window->rootObject()->hasActiveFocus()); @@ -1406,7 +1479,7 @@ void tst_QQuickItem::keysForward() window.show(); window.requestActivate(); QVERIFY(QTest::qWaitForWindowActive(&window)); - QVERIFY(QGuiApplication::focusWindow() == &window); + QCOMPARE(QGuiApplication::focusWindow(), &window); QQuickItem *rootItem = qobject_cast<QQuickItem *>(window.rootObject()); QVERIFY(rootItem); @@ -1646,7 +1719,7 @@ void tst_QQuickItem::keyNavigation() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); QQuickItem *item = findItem<QQuickItem>(window->rootObject(), "item1"); QVERIFY(item); @@ -1723,7 +1796,7 @@ void tst_QQuickItem::keyNavigation_RightToLeft() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); QQuickItem *rootItem = qobject_cast<QQuickItem*>(window->rootObject()); QVERIFY(rootItem); @@ -1778,7 +1851,7 @@ void tst_QQuickItem::keyNavigation_skipNotVisible() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); QQuickItem *item = findItem<QQuickItem>(window->rootObject(), "item1"); QVERIFY(item); @@ -1853,7 +1926,7 @@ void tst_QQuickItem::keyNavigation_implicitSetting() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); QEvent wa(QEvent::WindowActivate); QGuiApplication::sendEvent(window, &wa); @@ -1983,7 +2056,7 @@ void tst_QQuickItem::keyNavigation_focusReason() window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); // install event filter on first item QQuickItem *item = findItem<QQuickItem>(window->rootObject(), "item1"); @@ -2018,10 +2091,14 @@ void tst_QQuickItem::keyNavigation_focusReason() QVERIFY(key.isAccepted()); QCOMPARE(focusEventFilter.lastFocusReason, Qt::BacktabFocusReason); - // some arbitrary cursor key + // right - it's also one kind of key navigation key = QKeyEvent(QEvent::KeyPress, Qt::Key_Right, Qt::NoModifier, "", false, 1); QGuiApplication::sendEvent(window, &key); QVERIFY(key.isAccepted()); + QCOMPARE(focusEventFilter.lastFocusReason, Qt::TabFocusReason); + + item->setFocus(true, Qt::OtherFocusReason); + QVERIFY(item->hasActiveFocus()); QCOMPARE(focusEventFilter.lastFocusReason, Qt::OtherFocusReason); delete window; @@ -2066,8 +2143,8 @@ void tst_QQuickItem::smooth() QVERIFY(item->smooth()); QCOMPARE(spy.count(),1); QList<QVariant> arguments = spy.first(); - QVERIFY(arguments.count() == 1); - QVERIFY(arguments.at(0).toBool() == true); + QCOMPARE(arguments.count(), 1); + QVERIFY(arguments.at(0).toBool()); item->setSmooth(true); QCOMPARE(spy.count(),1); @@ -2095,8 +2172,8 @@ void tst_QQuickItem::antialiasing() QVERIFY(item->antialiasing()); QCOMPARE(spy.count(),1); QList<QVariant> arguments = spy.first(); - QVERIFY(arguments.count() == 1); - QVERIFY(arguments.at(0).toBool() == true); + QCOMPARE(arguments.count(), 1); + QVERIFY(arguments.at(0).toBool()); item->setAntialiasing(true); QCOMPARE(spy.count(),1); @@ -2124,8 +2201,8 @@ void tst_QQuickItem::clip() QVERIFY(item->clip()); QList<QVariant> arguments = spy.first(); - QVERIFY(arguments.count() == 1); - QVERIFY(arguments.at(0).toBool() == true); + QCOMPARE(arguments.count(), 1); + QVERIFY(arguments.at(0).toBool()); QCOMPARE(spy.count(),1); item->setClip(true); @@ -2351,7 +2428,7 @@ void tst_QQuickItem::propertyChanges() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); QQuickItem *item = findItem<QQuickItem>(window->rootObject(), "item"); QQuickItem *parentItem = findItem<QQuickItem>(window->rootObject(), "parentItem"); @@ -2379,7 +2456,7 @@ void tst_QQuickItem::propertyChanges() QCOMPARE(item->parentItem(), parentItem); QCOMPARE(parentSpy.count(),1); QList<QVariant> parentArguments = parentSpy.first(); - QVERIFY(parentArguments.count() == 1); + QCOMPARE(parentArguments.count(), 1); QCOMPARE(item->parentItem(), qvariant_cast<QQuickItem *>(parentArguments.at(0))); QCOMPARE(childrenChangedSpy.count(),1); @@ -2395,19 +2472,19 @@ void tst_QQuickItem::propertyChanges() QCOMPARE(item->baselineOffset(), 10.0); QCOMPARE(baselineOffsetSpy.count(),1); QList<QVariant> baselineOffsetArguments = baselineOffsetSpy.first(); - QVERIFY(baselineOffsetArguments.count() == 1); + QCOMPARE(baselineOffsetArguments.count(), 1); QCOMPARE(item->baselineOffset(), baselineOffsetArguments.at(0).toReal()); QCOMPARE(parentItem->childrenRect(), QRectF(0.0,0.0,100.0,200.0)); QCOMPARE(childrenRectSpy.count(),1); QList<QVariant> childrenRectArguments = childrenRectSpy.at(0); - QVERIFY(childrenRectArguments.count() == 1); + QCOMPARE(childrenRectArguments.count(), 1); QCOMPARE(parentItem->childrenRect(), childrenRectArguments.at(0).toRectF()); QCOMPARE(item->hasActiveFocus(), true); QCOMPARE(focusSpy.count(),1); QList<QVariant> focusArguments = focusSpy.first(); - QVERIFY(focusArguments.count() == 1); + QCOMPARE(focusArguments.count(), 1); QCOMPARE(focusArguments.at(0).toBool(), true); QCOMPARE(parentItem->hasActiveFocus(), false); @@ -2519,6 +2596,22 @@ void tst_QQuickItem::childrenRectBug3() delete window; } +// QTBUG-38732 +void tst_QQuickItem::childrenRectBottomRightCorner() +{ + QQuickView *window = new QQuickView(0); + window->setSource(testFileUrl("childrenRectBottomRightCorner.qml")); + window->show(); + + QQuickItem *rect = window->rootObject()->findChild<QQuickItem*>("childrenRectProxy"); + QCOMPARE(rect->x(), qreal(-100)); + QCOMPARE(rect->y(), qreal(-100)); + QCOMPARE(rect->width(), qreal(50)); + QCOMPARE(rect->height(), qreal(50)); + + delete window; +} + // QTBUG-13893 void tst_QQuickItem::transformCrash() { @@ -2671,7 +2764,10 @@ void tst_QQuickItem::parentLoop() { QQuickView *window = new QQuickView(0); - QTest::ignoreMessage(QtWarningMsg, "QQuickItem::setParentItem: Parent is already part of this items subtree."); +#ifndef QT_NO_REGULAREXPRESSION + QRegularExpression msgRegexp = QRegularExpression("QQuickItem::setParentItem: Parent QQuickItem\\(.*\\) is already part of the subtree of QQuickItem\\(.*\\)"); + QTest::ignoreMessage(QtWarningMsg, msgRegexp); +#endif window->setSource(testFileUrl("parentLoop.qml")); QQuickItem *root = qobject_cast<QQuickItem*>(window->rootObject()); @@ -2763,7 +2859,7 @@ void tst_QQuickItem::contains() window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); - QVERIFY(QGuiApplication::focusWindow() == window); + QCOMPARE(QGuiApplication::focusWindow(), window); QQuickItem *root = qobject_cast<QQuickItem *>(window->rootObject()); QVERIFY(root); |