aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml')
-rw-r--r--src/qml/qml/qqmlengine_p.h15
-rw-r--r--src/qml/qml/qqmljavascriptexpression.cpp9
-rw-r--r--src/qml/qml/qqmljavascriptexpression_p.h2
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,