Avoid passing a FunctionObject to QQmlBinding::create()
Like this we can remove the QQmlBinding::create() overload that takes a FunctionObject. Change-Id: Ib6c37395ded325e68cf0fbf3afd08fb6dd6efa3b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
This commit is contained in:
parent
a11be5881a
commit
b45ebc6f45
|
@ -392,7 +392,8 @@ void QObjectWrapper::setProperty(ExecutionEngine *engine, QObject *object, QQmlP
|
||||||
|
|
||||||
QV4::Scoped<QQmlBindingFunction> bindingFunction(scope, (const Value &)f);
|
QV4::Scoped<QQmlBindingFunction> bindingFunction(scope, (const Value &)f);
|
||||||
|
|
||||||
newBinding = QQmlBinding::create(property, f, object, callingQmlContext);
|
QV4::ScopedContext ctx(scope, bindingFunction->scope());
|
||||||
|
newBinding = QQmlBinding::create(property, bindingFunction->function(), object, callingQmlContext, ctx);
|
||||||
newBinding->setSourceLocation(bindingFunction->currentLocation());
|
newBinding->setSourceLocation(bindingFunction->currentLocation());
|
||||||
newBinding->setTarget(object, *property, nullptr);
|
newBinding->setTarget(object, *property, nullptr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,21 +110,8 @@ QQmlBinding *QQmlBinding::create(const QQmlPropertyData *property, const QString
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
QQmlBinding *QQmlBinding::create(const QQmlPropertyData *property, const QV4::FunctionObject *function, QObject *obj, QQmlContextData *ctxt)
|
|
||||||
{
|
|
||||||
QQmlBinding *b = newBinding(QQmlEnginePrivate::get(ctxt), property);
|
|
||||||
|
|
||||||
b->setNotifyOnValueChanged(true);
|
|
||||||
b->QQmlJavaScriptExpression::setContext(ctxt);
|
|
||||||
b->setScopeObject(obj);
|
|
||||||
|
|
||||||
b->setFunctionObject(function);
|
|
||||||
|
|
||||||
return b;
|
|
||||||
}
|
|
||||||
|
|
||||||
QQmlBinding *QQmlBinding::create(const QQmlPropertyData *property, QV4::Function *function,
|
QQmlBinding *QQmlBinding::create(const QQmlPropertyData *property, QV4::Function *function,
|
||||||
QObject *obj, QQmlContextData *ctxt, QV4::QmlContext *sharedContext)
|
QObject *obj, QQmlContextData *ctxt, QV4::ExecutionContext *scope)
|
||||||
{
|
{
|
||||||
QQmlBinding *b = newBinding(QQmlEnginePrivate::get(ctxt), property);
|
QQmlBinding *b = newBinding(QQmlEnginePrivate::get(ctxt), property);
|
||||||
|
|
||||||
|
@ -132,8 +119,8 @@ QQmlBinding *QQmlBinding::create(const QQmlPropertyData *property, QV4::Function
|
||||||
b->QQmlJavaScriptExpression::setContext(ctxt);
|
b->QQmlJavaScriptExpression::setContext(ctxt);
|
||||||
b->setScopeObject(obj);
|
b->setScopeObject(obj);
|
||||||
|
|
||||||
Q_ASSERT(sharedContext);
|
Q_ASSERT(scope);
|
||||||
b->setupFunction(sharedContext, function);
|
b->setupFunction(scope, function);
|
||||||
|
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,9 +75,8 @@ public:
|
||||||
static QQmlBinding *create(const QQmlPropertyData *, const QQmlScriptString &, QObject *, QQmlContext *);
|
static QQmlBinding *create(const QQmlPropertyData *, const QQmlScriptString &, QObject *, QQmlContext *);
|
||||||
static QQmlBinding *create(const QQmlPropertyData *, const QString &, QObject *, QQmlContextData *,
|
static QQmlBinding *create(const QQmlPropertyData *, const QString &, QObject *, QQmlContextData *,
|
||||||
const QString &url = QString(), quint16 lineNumber = 0);
|
const QString &url = QString(), quint16 lineNumber = 0);
|
||||||
static QQmlBinding *create(const QQmlPropertyData *, const QV4::FunctionObject *function, QObject *, QQmlContextData *);
|
|
||||||
static QQmlBinding *create(const QQmlPropertyData *property, QV4::Function *function,
|
static QQmlBinding *create(const QQmlPropertyData *property, QV4::Function *function,
|
||||||
QObject *obj, QQmlContextData *ctxt, QV4::QmlContext *sharedContext);
|
QObject *obj, QQmlContextData *ctxt, QV4::ExecutionContext *scope);
|
||||||
~QQmlBinding();
|
~QQmlBinding();
|
||||||
|
|
||||||
void setTarget(const QQmlProperty &);
|
void setTarget(const QQmlProperty &);
|
||||||
|
|
|
@ -466,7 +466,7 @@ void QQmlJavaScriptExpression::setFunctionObject(const QV4::FunctionObject *o)
|
||||||
m_compilationUnit = m_v4Function->compilationUnit;
|
m_compilationUnit = m_v4Function->compilationUnit;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QQmlJavaScriptExpression::setupFunction(QV4::QmlContext *qmlContext, QV4::Function *f)
|
void QQmlJavaScriptExpression::setupFunction(QV4::ExecutionContext *qmlContext, QV4::Function *f)
|
||||||
{
|
{
|
||||||
if (!qmlContext || !f)
|
if (!qmlContext || !f)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -160,7 +160,7 @@ protected:
|
||||||
}
|
}
|
||||||
|
|
||||||
void setFunctionObject(const QV4::FunctionObject *o);
|
void setFunctionObject(const QV4::FunctionObject *o);
|
||||||
void setupFunction(QV4::QmlContext *qmlContext, QV4::Function *f);
|
void setupFunction(QV4::ExecutionContext *qmlContext, QV4::Function *f);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class QQmlContextData;
|
friend class QQmlContextData;
|
||||||
|
|
|
@ -454,7 +454,8 @@ void QQmlValueTypeWrapper::put(Managed *m, String *name, const Value &value)
|
||||||
|
|
||||||
QV4::Scoped<QQmlBindingFunction> bindingFunction(scope, (const Value &)f);
|
QV4::Scoped<QQmlBindingFunction> bindingFunction(scope, (const Value &)f);
|
||||||
|
|
||||||
QQmlBinding *newBinding = QQmlBinding::create(&cacheData, f, reference->d()->object, context);
|
QV4::ScopedContext ctx(scope, bindingFunction->scope());
|
||||||
|
QQmlBinding *newBinding = QQmlBinding::create(&cacheData, bindingFunction->function(), reference->d()->object, context, ctx);
|
||||||
newBinding->setSourceLocation(bindingFunction->currentLocation());
|
newBinding->setSourceLocation(bindingFunction->currentLocation());
|
||||||
newBinding->setTarget(reference->d()->object, cacheData, pd);
|
newBinding->setTarget(reference->d()->object, cacheData, pd);
|
||||||
QQmlPropertyPrivate::setBinding(newBinding);
|
QQmlPropertyPrivate::setBinding(newBinding);
|
||||||
|
|
Loading…
Reference in New Issue