From: Andrew den Exter Date: Mon, 26 Mar 2012 02:04:00 +0000 (+1000) Subject: Update item anchors when the baseline offset changes. X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=6cdfad980d760ef87b8f425cf1affda16fa76a62;p=konrad%2Fqtdeclarative.git Update item anchors when the baseline offset changes. Task-number: QTBUG-24303 Change-Id: I75fb8eb8afb48a3f40fa159d914ac12ab6bc9ffe Reviewed-by: Michael Brasser --- diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 201496c..9eae661 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -3312,6 +3312,10 @@ void QQuickItem::setBaselineOffset(qreal offset) anchor->updateVerticalAnchors(); } } + + if (d->_anchors && (d->_anchors->usedAnchors() & QQuickAnchors::BaselineAnchor)) + QQuickAnchorsPrivate::get(d->_anchors)->updateVerticalAnchors(); + emit baselineOffsetChanged(offset); } diff --git a/tests/auto/quick/qquickanchors/data/baselineOffset.qml b/tests/auto/quick/qquickanchors/data/baselineOffset.qml new file mode 100644 index 0000000..8bae61d --- /dev/null +++ b/tests/auto/quick/qquickanchors/data/baselineOffset.qml @@ -0,0 +1,15 @@ +import QtQuick 2.0 + +Item { + width: 200 + height: 200 + + Item { + objectName: "baselineAnchored" + + width: 200 + height: 10 + + anchors.baseline: parent.verticalCenter + } +} diff --git a/tests/auto/quick/qquickanchors/tst_qquickanchors.cpp b/tests/auto/quick/qquickanchors/tst_qquickanchors.cpp index dd1f9f7..7b748f6 100644 --- a/tests/auto/quick/qquickanchors/tst_qquickanchors.cpp +++ b/tests/auto/quick/qquickanchors/tst_qquickanchors.cpp @@ -84,6 +84,7 @@ private slots: void margins(); void marginsRTL(); void stretch(); + void baselineOffset(); }; void tst_qquickanchors::basicAnchors() @@ -705,6 +706,29 @@ void tst_qquickanchors::stretch() delete view; } +void tst_qquickanchors::baselineOffset() +{ + QQmlEngine engine; + QQmlComponent component(&engine, testFileUrl("baselineOffset.qml")); + QScopedPointer object(component.create()); + + QQuickItem *item = qobject_cast(object.data()); + QVERIFY(item); + + QQuickItem *anchoredItem = findItem(item, QLatin1String("baselineAnchored")); + + QCOMPARE(anchoredItem->baselineOffset(), 0.0); + QCOMPARE(anchoredItem->y(), 100.0); + + anchoredItem->setBaselineOffset(5); + QCOMPARE(anchoredItem->baselineOffset(), 5.0); + QCOMPARE(anchoredItem->y(), 95.0); + + anchoredItem->setBaselineOffset(10); + QCOMPARE(anchoredItem->baselineOffset(), 10.0); + QCOMPARE(anchoredItem->y(), 90.0); +} + QTEST_MAIN(tst_qquickanchors) #include "tst_qquickanchors.moc"