diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-10-10 20:53:41 +0200 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-10-12 10:03:04 +0200 |
commit | bb391a90b0230534581667b221ae7ddd2257a906 (patch) | |
tree | 21ede21fa643901f770f3dab7dfbb0673a78593c /src/qml/qml | |
parent | 43dbc7cbd14686d7a27e78b0a6c902be429d0f9a (diff) |
QPropertyChangeTrigger: Inherit directly from QPropertyObserver
Change-Id: If2ffeef14d33200e39fb8b3e7fd88c232164a241
Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/qml')
-rw-r--r-- | src/qml/qml/qqmlengine_p.h | 15 | ||||
-rw-r--r-- | src/qml/qml/qqmljavascriptexpression.cpp | 9 | ||||
-rw-r--r-- | src/qml/qml/qqmljavascriptexpression_p.h | 2 |
3 files changed, 15 insertions, 11 deletions
diff --git a/src/qml/qml/qqmlengine_p.h b/src/qml/qml/qqmlengine_p.h index 1f513ef8cc..7db03570e2 100644 --- a/src/qml/qml/qqmlengine_p.h +++ b/src/qml/qml/qqmlengine_p.h @@ -127,16 +127,19 @@ public: QQmlJavaScriptExpressionGuard *next; }; -struct QPropertyChangeTrigger { +struct QPropertyChangeTrigger : QPropertyObserver { + QPropertyChangeTrigger(QQmlJavaScriptExpression *expression) : QPropertyObserver(&QPropertyChangeTrigger::trigger), m_expression(expression) {} QQmlJavaScriptExpression * m_expression; - void operator()(); + QObject *target = nullptr; + int propertyIndex = 0; + static void trigger(QPropertyObserver *, QUntypedPropertyData *); }; -struct TriggerList : QPropertyChangeHandler<QPropertyChangeTrigger> { - TriggerList(QPropertyChangeTrigger trigger) : QPropertyChangeHandler<QPropertyChangeTrigger>(trigger) {}; +struct TriggerList : QPropertyChangeTrigger { + TriggerList(QQmlJavaScriptExpression *expression) + : QPropertyChangeTrigger(expression) + {} TriggerList *next = nullptr; - QObject *target = nullptr; - int propertyIndex = 0; }; class Q_QML_PRIVATE_EXPORT QQmlEnginePrivate : public QJSEnginePrivate diff --git a/src/qml/qml/qqmljavascriptexpression.cpp b/src/qml/qml/qqmljavascriptexpression.cpp index 88a9932f53..c711f0ab70 100644 --- a/src/qml/qml/qqmljavascriptexpression.cpp +++ b/src/qml/qml/qqmljavascriptexpression.cpp @@ -447,13 +447,14 @@ void QQmlJavaScriptExpression::setCompilationUnit(const QQmlRefPointer<QV4::Exec m_compilationUnit = compilationUnit; } -void QPropertyChangeTrigger::operator()() { - m_expression->expressionChanged(); +void QPropertyChangeTrigger::trigger(QPropertyObserver *observer, QUntypedPropertyData *) { + auto This = static_cast<QPropertyChangeTrigger *>(observer); + This->m_expression->expressionChanged(); } -QPropertyChangeHandler<QPropertyChangeTrigger> *QQmlJavaScriptExpression::allocatePropertyChangeTrigger(QObject *target, int propertyIndex) +QPropertyChangeTrigger *QQmlJavaScriptExpression::allocatePropertyChangeTrigger(QObject *target, int propertyIndex) { - auto trigger = QQmlEnginePrivate::get(engine())->qPropertyTriggerPool.New(QPropertyChangeTrigger { this }); + auto trigger = QQmlEnginePrivate::get(engine())->qPropertyTriggerPool.New( this ); trigger->target = target; trigger->propertyIndex = propertyIndex; auto oldHead = qpropertyChangeTriggers; diff --git a/src/qml/qml/qqmljavascriptexpression_p.h b/src/qml/qml/qqmljavascriptexpression_p.h index 458b056d5e..499d4d430f 100644 --- a/src/qml/qml/qqmljavascriptexpression_p.h +++ b/src/qml/qml/qqmljavascriptexpression_p.h @@ -164,7 +164,7 @@ public: QQmlEngine *engine() const { return m_context ? m_context->engine() : nullptr; } bool hasUnresolvedNames() const { return m_context && m_context->hasUnresolvedNames(); } - QPropertyChangeHandler<QPropertyChangeTrigger>* allocatePropertyChangeTrigger(QObject *target, int propertyIndex); + QPropertyChangeTrigger *allocatePropertyChangeTrigger(QObject *target, int propertyIndex); protected: void createQmlBinding(const QQmlRefPointer<QQmlContextData> &ctxt, QObject *scope, |