From 1771d298f33543a3fe47decfe0fff10609b01ab1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 27 Jun 2018 16:16:19 +0200 Subject: Teach Rectangle's gradient property to accept QGradient::Preset Change-Id: Id640b596c1d8d52221f2f2be8807d6e245971bdc Reviewed-by: Simon Hausmann --- .../auto/quick/qquickdesignersupport/data/test.qml | 4 ++-- .../tst_qquickdesignersupport.cpp | 8 +++---- .../quick/qquickrectangle/data/gradient-preset.qml | 16 +++++++++++++ .../quick/qquickrectangle/tst_qquickrectangle.cpp | 28 ++++++++++++++++++++-- 4 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 tests/auto/quick/qquickrectangle/data/gradient-preset.qml (limited to 'tests/auto/quick') diff --git a/tests/auto/quick/qquickdesignersupport/data/test.qml b/tests/auto/quick/qquickdesignersupport/data/test.qml index 1d43cb3b7e..6c89f15257 100644 --- a/tests/auto/quick/qquickdesignersupport/data/test.qml +++ b/tests/auto/quick/qquickdesignersupport/data/test.qml @@ -1,4 +1,4 @@ -import QtQuick 2.0 +import QtQuick 2.11 Rectangle { objectName: "rootItem" @@ -13,7 +13,7 @@ Rectangle { Rectangle { objectName: "rectangleItem" - gradient: Gradient { + containmentMask: Item { } } diff --git a/tests/auto/quick/qquickdesignersupport/tst_qquickdesignersupport.cpp b/tests/auto/quick/qquickdesignersupport/tst_qquickdesignersupport.cpp index 96a11e16e9..3e0765552a 100644 --- a/tests/auto/quick/qquickdesignersupport/tst_qquickdesignersupport.cpp +++ b/tests/auto/quick/qquickdesignersupport/tst_qquickdesignersupport.cpp @@ -209,15 +209,15 @@ void tst_qquickdesignersupport::objectProperties() //Read gradient property as QObject - int propertyIndex = rectangleItem->metaObject()->indexOfProperty("gradient"); + int propertyIndex = rectangleItem->metaObject()->indexOfProperty("containmentMask"); QVERIFY(propertyIndex > 0); QMetaProperty metaProperty = rectangleItem->metaObject()->property(propertyIndex); QVERIFY(metaProperty.isValid()); QVERIFY(QQuickDesignerSupportProperties::isPropertyQObject(metaProperty)); - QObject*gradient = QQuickDesignerSupportProperties::readQObjectProperty(metaProperty, rectangleItem); - QVERIFY(gradient); + QObject *containmentItem = QQuickDesignerSupportProperties::readQObjectProperty(metaProperty, rectangleItem); + QVERIFY(containmentItem); //The width property is not a QObject @@ -450,7 +450,7 @@ void tst_qquickdesignersupport::testNotifyPropertyChangeCallBack() QQuickDesignerSupportMetaInfo::registerNotifyPropertyChangeCallBack(notifyPropertyChangeCallBackPointer); - rectangle->setProperty("gradient", QVariant::fromValue(gradient)); + rectangle->setProperty("gradient", QVariant::fromValue(view->engine()->newQObject(gradient))); QVERIFY(s_object); QCOMPARE(s_object, rootItem); diff --git a/tests/auto/quick/qquickrectangle/data/gradient-preset.qml b/tests/auto/quick/qquickrectangle/data/gradient-preset.qml new file mode 100644 index 0000000000..b740bdd610 --- /dev/null +++ b/tests/auto/quick/qquickrectangle/data/gradient-preset.qml @@ -0,0 +1,16 @@ +import QtQuick 2.0 + +Item { + Rectangle { + objectName: "enum" + gradient: Gradient.NightFade + } + Rectangle { + objectName: "string" + gradient: "NightFade" + } + Rectangle { + objectName: "invalid" + gradient: -1 + } +} diff --git a/tests/auto/quick/qquickrectangle/tst_qquickrectangle.cpp b/tests/auto/quick/qquickrectangle/tst_qquickrectangle.cpp index 2aaad867bf..f6ca999cf5 100644 --- a/tests/auto/quick/qquickrectangle/tst_qquickrectangle.cpp +++ b/tests/auto/quick/qquickrectangle/tst_qquickrectangle.cpp @@ -49,6 +49,7 @@ private slots: void gradient_border(); void gradient_separate(); void gradient_multiple(); + void gradient_preset(); void antialiasing(); private: @@ -84,7 +85,7 @@ void tst_qquickrectangle::gradient() QQuickRectangle *rect = qobject_cast(component.create()); QVERIFY(rect); - QQuickGradient *grad = rect->gradient(); + QQuickGradient *grad = qobject_cast(rect->gradient().toQObject()); QVERIFY(grad); QQmlListProperty stops = grad->stops(); @@ -103,7 +104,7 @@ void tst_qquickrectangle::gradient() QMetaObject::invokeMethod(rect, "resetGradient"); - grad = rect->gradient(); + grad = qobject_cast(rect->gradient().toQObject()); QVERIFY(!grad); delete rect; @@ -174,6 +175,29 @@ void tst_qquickrectangle::gradient_multiple() QVERIFY(secondIsDirty); } +void tst_qquickrectangle::gradient_preset() +{ + QQuickView view; + view.setSource(testFileUrl("gradient-preset.qml")); + view.show(); + + QVERIFY(QTest::qWaitForWindowExposed(&view)); + + QQuickRectangle *enumRect = view.rootObject()->findChild("enum"); + QVERIFY(enumRect); + QVERIFY(enumRect->gradient().isNumber()); + QCOMPARE(enumRect->gradient().toUInt(), QGradient::NightFade); + + QQuickRectangle *stringRect = view.rootObject()->findChild("string"); + QVERIFY(stringRect); + QVERIFY(stringRect->gradient().isString()); + QCOMPARE(stringRect->gradient().toString(), QLatin1String("NightFade")); + + QQuickRectangle *invalidRect = view.rootObject()->findChild("invalid"); + QVERIFY(invalidRect); + QVERIFY(invalidRect->gradient().isUndefined()); +} + void tst_qquickrectangle::antialiasing() { QQmlComponent component(&engine); -- cgit v1.2.3