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);
|
||||
|
||||
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->setTarget(object, *property, nullptr);
|
||||
}
|
||||
|
|
|
@ -110,21 +110,8 @@ QQmlBinding *QQmlBinding::create(const QQmlPropertyData *property, const QString
|
|||
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,
|
||||
QObject *obj, QQmlContextData *ctxt, QV4::QmlContext *sharedContext)
|
||||
QObject *obj, QQmlContextData *ctxt, QV4::ExecutionContext *scope)
|
||||
{
|
||||
QQmlBinding *b = newBinding(QQmlEnginePrivate::get(ctxt), property);
|
||||
|
||||
|
@ -132,8 +119,8 @@ QQmlBinding *QQmlBinding::create(const QQmlPropertyData *property, QV4::Function
|
|||
b->QQmlJavaScriptExpression::setContext(ctxt);
|
||||
b->setScopeObject(obj);
|
||||
|
||||
Q_ASSERT(sharedContext);
|
||||
b->setupFunction(sharedContext, function);
|
||||
Q_ASSERT(scope);
|
||||
b->setupFunction(scope, function);
|
||||
|
||||
return b;
|
||||
}
|
||||
|
|
|
@ -75,9 +75,8 @@ public:
|
|||
static QQmlBinding *create(const QQmlPropertyData *, const QQmlScriptString &, QObject *, QQmlContext *);
|
||||
static QQmlBinding *create(const QQmlPropertyData *, const QString &, QObject *, QQmlContextData *,
|
||||
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,
|
||||
QObject *obj, QQmlContextData *ctxt, QV4::QmlContext *sharedContext);
|
||||
QObject *obj, QQmlContextData *ctxt, QV4::ExecutionContext *scope);
|
||||
~QQmlBinding();
|
||||
|
||||
void setTarget(const QQmlProperty &);
|
||||
|
|
|
@ -466,7 +466,7 @@ void QQmlJavaScriptExpression::setFunctionObject(const QV4::FunctionObject *o)
|
|||
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)
|
||||
return;
|
||||
|
|
|
@ -160,7 +160,7 @@ protected:
|
|||
}
|
||||
|
||||
void setFunctionObject(const QV4::FunctionObject *o);
|
||||
void setupFunction(QV4::QmlContext *qmlContext, QV4::Function *f);
|
||||
void setupFunction(QV4::ExecutionContext *qmlContext, QV4::Function *f);
|
||||
|
||||
private:
|
||||
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);
|
||||
|
||||
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->setTarget(reference->d()->object, cacheData, pd);
|
||||
QQmlPropertyPrivate::setBinding(newBinding);
|
||||
|
|
Loading…
Reference in New Issue