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 Pick-to: 6.2 6.3 Change-Id: I7d82a9f6e0f7d5eb48065e3f428b814939181ea8 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>bb10
parent
cbf8fc0ac4
commit
908ee8aab1
|
|
@ -286,6 +286,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)
|
||||
|
|
|
|||
|
|
@ -118,6 +118,7 @@ private slots:
|
|||
void selfBindingShouldNotCrash();
|
||||
|
||||
void qpropertyAlias();
|
||||
void scheduleNotify();
|
||||
};
|
||||
|
||||
void tst_QProperty::functorBinding()
|
||||
|
|
@ -2015,6 +2016,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…
Reference in New Issue