QProperty: Allow manual scheduling of binding notification
In some situation we want to notify even if the value didn't change. Task-number: QTBUG-101771 Change-Id: I7d82a9f6e0f7d5eb48065e3f428b814939181ea8 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 908ee8aab1d9b5d022cadb23d23de56ca72570e9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
7a5ca30587
commit
5c4be5351e
@ -242,6 +242,7 @@ public:
|
||||
bool isUpdating() {return updating;}
|
||||
void setSticky(bool keep = true) {m_sticky = keep;}
|
||||
bool isSticky() {return m_sticky;}
|
||||
void scheduleNotify() {pendingNotify = true;}
|
||||
|
||||
QPropertyBindingPrivate(QMetaType metaType, const QtPrivate::BindingFunctionVTable *vtable,
|
||||
const QPropertyBindingSourceLocation &location, bool isQQmlPropertyBinding=false)
|
||||
|
@ -117,6 +117,7 @@ private slots:
|
||||
void selfBindingShouldNotCrash();
|
||||
|
||||
void qpropertyAlias();
|
||||
void scheduleNotify();
|
||||
};
|
||||
|
||||
void tst_QProperty::functorBinding()
|
||||
@ -1874,6 +1875,21 @@ void tst_QProperty::qpropertyAlias()
|
||||
QVERIFY(!alias.isValid());
|
||||
}
|
||||
|
||||
void tst_QProperty::scheduleNotify()
|
||||
{
|
||||
int notifications = 0;
|
||||
QProperty<int> p;
|
||||
QCOMPARE(p.value(), 0);
|
||||
const auto handler = p.addNotifier([&](){ ++notifications; });
|
||||
QCOMPARE(notifications, 0);
|
||||
QPropertyBinding<int> b([]() { return 0; }, QPropertyBindingSourceLocation());
|
||||
QPropertyBindingPrivate::get(b)->scheduleNotify();
|
||||
QCOMPARE(notifications, 0);
|
||||
p.setBinding(b);
|
||||
QCOMPARE(notifications, 1);
|
||||
QCOMPARE(p.value(), 0);
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QProperty);
|
||||
|
||||
#undef QT_SOURCE_LOCATION_NAMESPACE
|
||||
|
Loading…
x
Reference in New Issue
Block a user