aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml
diff options
context:
space:
mode:
authorFabian Kosmale <fabian.kosmale@qt.io>2020-10-10 20:53:41 +0200
committerFabian Kosmale <fabian.kosmale@qt.io>2020-10-12 10:03:04 +0200
commitbb391a90b0230534581667b221ae7ddd2257a906 (patch)
tree21ede21fa643901f770f3dab7dfbb0673a78593c /src/qml/qml
parent43dbc7cbd14686d7a27e78b0a6c902be429d0f9a (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.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,