diff options
author | Erik Verbruggen <erik.verbruggen@qt.io> | 2019-04-29 10:42:00 +0200 |
---|---|---|
committer | Michael Brasser <michael.brasser@live.com> | 2019-05-17 19:28:31 +0000 |
commit | f38e071f5b353cbf9ce6c6c104bd82099ae0aa14 (patch) | |
tree | e7b1acb1ecc513912b7e0956e85ec00185405973 /src/qml/types/qqmlbind_p.h | |
parent | bc9f502d5ff7b6fc874f0e65019f7967916eab11 (diff) |
Restore value bindings when disabling a Binding element
We previously only restored script bindings that were replaced by
a Binding. Now we handle both.
[ChangeLog] QML Binding elements now support restoring previous values
of the bound property when the binding is disabled. This will be the
default behavior in Qt 5.15. Reliance on the old behavior of only
restoring binding, not literal values results in a warning now.
Fixes: QTBUG-33444
Change-Id: I833403b0645c08eee486fbd4acf5d3c7de2ef73a
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Diffstat (limited to 'src/qml/types/qqmlbind_p.h')
-rw-r--r-- | src/qml/types/qqmlbind_p.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/qml/types/qqmlbind_p.h b/src/qml/types/qqmlbind_p.h index 5bf9ef85c6..22007a3d25 100644 --- a/src/qml/types/qqmlbind_p.h +++ b/src/qml/types/qqmlbind_p.h @@ -60,6 +60,15 @@ QT_BEGIN_NAMESPACE class QQmlBindPrivate; class Q_AUTOTEST_EXPORT QQmlBind : public QObject, public QQmlPropertyValueSource, public QQmlParserStatus { +public: + enum RestorationMode { + RestoreNone = 0x0, + RestoreBinding = 0x1, + RestoreValue = 0x2, + RestoreBindingOrValue = RestoreBinding | RestoreValue + }; + +private: Q_OBJECT Q_DECLARE_PRIVATE(QQmlBind) Q_INTERFACES(QQmlParserStatus) @@ -69,6 +78,9 @@ class Q_AUTOTEST_EXPORT QQmlBind : public QObject, public QQmlPropertyValueSourc Q_PROPERTY(QVariant value READ value WRITE setValue) Q_PROPERTY(bool when READ when WRITE setWhen) Q_PROPERTY(bool delayed READ delayed WRITE setDelayed REVISION 8) + Q_PROPERTY(RestorationMode restoreMode READ restoreMode WRITE setRestoreMode + NOTIFY restoreModeChanged REVISION 14) + Q_ENUM(RestorationMode) public: QQmlBind(QObject *parent=nullptr); @@ -89,6 +101,12 @@ public: bool delayed() const; void setDelayed(bool); + RestorationMode restoreMode() const; + void setRestoreMode(RestorationMode); + +Q_SIGNALS: + void restoreModeChanged(); + protected: void setTarget(const QQmlProperty &) override; void classBegin() override; |