aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/items/qquickrectangle.cpp20
-rw-r--r--src/quick/items/qquickrectangle_p.h6
-rw-r--r--tests/auto/quick/qquickrectangle/tst_qquickrectangle.cpp7
3 files changed, 24 insertions, 9 deletions
diff --git a/src/quick/items/qquickrectangle.cpp b/src/quick/items/qquickrectangle.cpp
index 48f79a2192..e50f772e89 100644
--- a/src/quick/items/qquickrectangle.cpp
+++ b/src/quick/items/qquickrectangle.cpp
@@ -255,6 +255,18 @@ QQmlListProperty<QQuickGradientStop> QQuickGradient::stops()
return QQmlListProperty<QQuickGradientStop>(this, m_stops);
}
+QGradientStops QQuickGradient::gradientStops() const
+{
+ QGradientStops stops;
+ for (int i = 0; i < m_stops.size(); ++i){
+ int j = 0;
+ while (j < stops.size() && stops.at(j).first < m_stops[i]->position())
+ j++;
+ stops.insert(j, QGradientStop(m_stops.at(i)->position(), m_stops.at(i)->color()));
+ }
+ return stops;
+}
+
void QQuickGradient::doUpdate()
{
emit updated();
@@ -480,13 +492,7 @@ QSGNode *QQuickRectangle::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData
QGradientStops stops;
if (d->gradient) {
- QList<QQuickGradientStop *> qxstops = d->gradient->m_stops;
- for (int i = 0; i < qxstops.size(); ++i){
- int j = 0;
- while (j < stops.size() && stops.at(j).first < qxstops[i]->position())
- j++;
- stops.insert(j, QGradientStop(qxstops.at(i)->position(), qxstops.at(i)->color()));
- }
+ stops = d->gradient->gradientStops();
}
rectangle->setGradientStops(stops);
diff --git a/src/quick/items/qquickrectangle_p.h b/src/quick/items/qquickrectangle_p.h
index 009512afd4..09b530c191 100644
--- a/src/quick/items/qquickrectangle_p.h
+++ b/src/quick/items/qquickrectangle_p.h
@@ -81,7 +81,7 @@ private:
bool m_valid : 1;
};
-class Q_AUTOTEST_EXPORT QQuickGradientStop : public QObject
+class Q_QUICK_PRIVATE_EXPORT QQuickGradientStop : public QObject
{
Q_OBJECT
@@ -105,7 +105,7 @@ private:
QColor m_color;
};
-class Q_AUTOTEST_EXPORT QQuickGradient : public QObject
+class Q_QUICK_PRIVATE_EXPORT QQuickGradient : public QObject
{
Q_OBJECT
@@ -118,6 +118,8 @@ public:
QQmlListProperty<QQuickGradientStop> stops();
+ QGradientStops gradientStops() const;
+
Q_SIGNALS:
void updated();
diff --git a/tests/auto/quick/qquickrectangle/tst_qquickrectangle.cpp b/tests/auto/quick/qquickrectangle/tst_qquickrectangle.cpp
index 204a3ff019..5657ec44a8 100644
--- a/tests/auto/quick/qquickrectangle/tst_qquickrectangle.cpp
+++ b/tests/auto/quick/qquickrectangle/tst_qquickrectangle.cpp
@@ -79,6 +79,13 @@ void tst_qquickrectangle::gradient()
QCOMPARE(stops.at(&stops, 1)->position(), 1.0);
QCOMPARE(stops.at(&stops, 1)->color(), QColor("white"));
+ QGradientStops gradientStops = grad->gradientStops();
+ QCOMPARE(gradientStops.count(), 2);
+ QCOMPARE(gradientStops.at(0).first, 0.0);
+ QCOMPARE(gradientStops.at(0).second, QColor("gray"));
+ QCOMPARE(gradientStops.at(1).first, 1.0);
+ QCOMPARE(gradientStops.at(1).second, QColor("white"));
+
QMetaObject::invokeMethod(rect, "resetGradient");
grad = rect->gradient();