diff options
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/designer/qquickdesignercustomobjectdata.cpp | 3 | ||||
-rw-r--r-- | src/quick/items/qquickstateoperations.cpp | 26 | ||||
-rw-r--r-- | src/quick/qtquick2.cpp | 7 | ||||
-rw-r--r-- | src/quick/util/qquickpropertychanges.cpp | 24 |
4 files changed, 36 insertions, 24 deletions
diff --git a/src/quick/designer/qquickdesignercustomobjectdata.cpp b/src/quick/designer/qquickdesignercustomobjectdata.cpp index 93e7b6133f..42dcb08d45 100644 --- a/src/quick/designer/qquickdesignercustomobjectdata.cpp +++ b/src/quick/designer/qquickdesignercustomobjectdata.cpp @@ -257,7 +257,8 @@ void QQuickDesignerCustomObjectData::setPropertyBinding(QQmlContext *context, return; if (property.isProperty()) { - QQmlBinding *binding = new QQmlBinding(expression, object(), context); + QQmlBinding *binding = QQmlBinding::create(&QQmlPropertyPrivate::get(property)->core, + expression, object(), context); binding->setTarget(property); binding->setNotifyOnValueChanged(true); diff --git a/src/quick/items/qquickstateoperations.cpp b/src/quick/items/qquickstateoperations.cpp index 73b1680305..7e485c675c 100644 --- a/src/quick/items/qquickstateoperations.cpp +++ b/src/quick/items/qquickstateoperations.cpp @@ -359,8 +359,8 @@ QQuickStateOperation::ActionList QQuickParentChange::actions() QQuickStateAction xa(d->target, QLatin1String("x"), x); actions << xa; } else { - QQmlBinding *newBinding = new QQmlBinding(d->xString.value, d->target, qmlContext(this)); QQmlProperty property(d->target, QLatin1String("x")); + QQmlBinding *newBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(property)->core, d->xString.value, d->target, qmlContext(this)); newBinding->setTarget(property); QQuickStateAction xa; xa.property = property; @@ -378,8 +378,8 @@ QQuickStateOperation::ActionList QQuickParentChange::actions() QQuickStateAction ya(d->target, QLatin1String("y"), y); actions << ya; } else { - QQmlBinding *newBinding = new QQmlBinding(d->yString.value, d->target, qmlContext(this)); QQmlProperty property(d->target, QLatin1String("y")); + QQmlBinding *newBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(property)->core, d->yString.value, d->target, qmlContext(this)); newBinding->setTarget(property); QQuickStateAction ya; ya.property = property; @@ -397,8 +397,8 @@ QQuickStateOperation::ActionList QQuickParentChange::actions() QQuickStateAction sa(d->target, QLatin1String("scale"), scale); actions << sa; } else { - QQmlBinding *newBinding = new QQmlBinding(d->scaleString.value, d->target, qmlContext(this)); QQmlProperty property(d->target, QLatin1String("scale")); + QQmlBinding *newBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(property)->core, d->scaleString.value, d->target, qmlContext(this)); newBinding->setTarget(property); QQuickStateAction sa; sa.property = property; @@ -416,8 +416,8 @@ QQuickStateOperation::ActionList QQuickParentChange::actions() QQuickStateAction ra(d->target, QLatin1String("rotation"), rotation); actions << ra; } else { - QQmlBinding *newBinding = new QQmlBinding(d->rotationString.value, d->target, qmlContext(this)); QQmlProperty property(d->target, QLatin1String("rotation")); + QQmlBinding *newBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(property)->core, d->rotationString.value, d->target, qmlContext(this)); newBinding->setTarget(property); QQuickStateAction ra; ra.property = property; @@ -435,8 +435,8 @@ QQuickStateOperation::ActionList QQuickParentChange::actions() QQuickStateAction wa(d->target, QLatin1String("width"), width); actions << wa; } else { - QQmlBinding *newBinding = new QQmlBinding(d->widthString.value, d->target, qmlContext(this)); QQmlProperty property(d->target, QLatin1String("width")); + QQmlBinding *newBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(property)->core, d->widthString.value, d->target, qmlContext(this)); newBinding->setTarget(property); QQuickStateAction wa; wa.property = property; @@ -454,8 +454,8 @@ QQuickStateOperation::ActionList QQuickParentChange::actions() QQuickStateAction ha(d->target, QLatin1String("height"), height); actions << ha; } else { - QQmlBinding *newBinding = new QQmlBinding(d->heightString.value, d->target, qmlContext(this)); QQmlProperty property(d->target, QLatin1String("height")); + QQmlBinding *newBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(property)->core, d->heightString.value, d->target, qmlContext(this)); newBinding->setTarget(property); QQuickStateAction ha; ha.property = property; @@ -866,31 +866,31 @@ QQuickAnchorChanges::ActionList QQuickAnchorChanges::actions() d->baselineProp = QQmlProperty(d->target, QLatin1String("anchors.baseline")); if (d->anchorSet->d_func()->usedAnchors & QQuickAnchors::LeftAnchor) { - d->leftBinding = new QQmlBinding(d->anchorSet->d_func()->leftScript, d->target, qmlContext(this)); + d->leftBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(d->leftProp)->core, d->anchorSet->d_func()->leftScript, d->target, qmlContext(this)); d->leftBinding->setTarget(d->leftProp); } if (d->anchorSet->d_func()->usedAnchors & QQuickAnchors::RightAnchor) { - d->rightBinding = new QQmlBinding(d->anchorSet->d_func()->rightScript, d->target, qmlContext(this)); + d->rightBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(d->rightProp)->core, d->anchorSet->d_func()->rightScript, d->target, qmlContext(this)); d->rightBinding->setTarget(d->rightProp); } if (d->anchorSet->d_func()->usedAnchors & QQuickAnchors::HCenterAnchor) { - d->hCenterBinding = new QQmlBinding(d->anchorSet->d_func()->hCenterScript, d->target, qmlContext(this)); + d->hCenterBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(d->hCenterProp)->core, d->anchorSet->d_func()->hCenterScript, d->target, qmlContext(this)); d->hCenterBinding->setTarget(d->hCenterProp); } if (d->anchorSet->d_func()->usedAnchors & QQuickAnchors::TopAnchor) { - d->topBinding = new QQmlBinding(d->anchorSet->d_func()->topScript, d->target, qmlContext(this)); + d->topBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(d->topProp)->core, d->anchorSet->d_func()->topScript, d->target, qmlContext(this)); d->topBinding->setTarget(d->topProp); } if (d->anchorSet->d_func()->usedAnchors & QQuickAnchors::BottomAnchor) { - d->bottomBinding = new QQmlBinding(d->anchorSet->d_func()->bottomScript, d->target, qmlContext(this)); + d->bottomBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(d->bottomProp)->core, d->anchorSet->d_func()->bottomScript, d->target, qmlContext(this)); d->bottomBinding->setTarget(d->bottomProp); } if (d->anchorSet->d_func()->usedAnchors & QQuickAnchors::VCenterAnchor) { - d->vCenterBinding = new QQmlBinding(d->anchorSet->d_func()->vCenterScript, d->target, qmlContext(this)); + d->vCenterBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(d->vCenterProp)->core, d->anchorSet->d_func()->vCenterScript, d->target, qmlContext(this)); d->vCenterBinding->setTarget(d->vCenterProp); } if (d->anchorSet->d_func()->usedAnchors & QQuickAnchors::BaselineAnchor) { - d->baselineBinding = new QQmlBinding(d->anchorSet->d_func()->baselineScript, d->target, qmlContext(this)); + d->baselineBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(d->baselineProp)->core, d->anchorSet->d_func()->baselineScript, d->target, qmlContext(this)); d->baselineBinding->setTarget(d->baselineProp); } diff --git a/src/quick/qtquick2.cpp b/src/quick/qtquick2.cpp index 41e30a1110..bf5b0083e9 100644 --- a/src/quick/qtquick2.cpp +++ b/src/quick/qtquick2.cpp @@ -136,9 +136,10 @@ void QQmlQtQuick2DebugStatesDelegate::updateBinding(QQmlContext *context, QQmlBinding *newBinding = 0; if (!isLiteralValue) { - newBinding = new QQmlBinding(expression.toString(), object, - QQmlContextData::get(context), fileName, - line, column); + newBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(property)->core, + expression.toString(), object, + QQmlContextData::get(context), fileName, + line, column); newBinding->setTarget(property); } diff --git a/src/quick/util/qquickpropertychanges.cpp b/src/quick/util/qquickpropertychanges.cpp index df65e0822b..a42ec31058 100644 --- a/src/quick/util/qquickpropertychanges.cpp +++ b/src/quick/util/qquickpropertychanges.cpp @@ -456,11 +456,13 @@ QQuickPropertyChanges::ActionList QQuickPropertyChanges::actions() if (e.id != QQmlBinding::Invalid) { QV4::Scope scope(QQmlEnginePrivate::getV4Engine(qmlEngine(this))); QV4::ScopedValue function(scope, QV4::FunctionObject::createQmlFunction(context, object(), d->compilationUnit->runtimeFunctions[e.id])); - newBinding = new QQmlBinding(function, object(), context); + newBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(prop)->core, + function, object(), context); } // QQmlBinding *newBinding = e.id != QQmlBinding::Invalid ? QQmlBinding::createBinding(e.id, object(), qmlContext(this)) : 0; if (!newBinding) - newBinding = new QQmlBinding(e.expression, object(), context, e.url.toString(), e.line, e.column); + newBinding = QQmlBinding::create(&QQmlPropertyPrivate::get(prop)->core, + e.expression, object(), context, e.url.toString(), e.line, e.column); if (d->isExplicit) { // in this case, we don't want to assign a binding, per se, @@ -624,8 +626,11 @@ void QQuickPropertyChanges::changeExpression(const QString &name, const QString if (entry.name == name) { entry.expression = expression; if (state() && state()->isStateActive()) { - QQmlBinding *newBinding = new QQmlBinding(expression, object(), qmlContext(this)); - newBinding->setTarget(d->property(name)); + auto prop = d->property(name); + QQmlBinding *newBinding = QQmlBinding::create( + &QQmlPropertyPrivate::get(prop)->core, expression, object(), + qmlContext(this)); + newBinding->setTarget(prop); QQmlPropertyPrivate::setBinding(newBinding, QQmlPropertyPrivate::None, QQmlPropertyPrivate::DontRemoveBinding | QQmlPropertyPrivate::BypassInterceptor); } return; @@ -643,8 +648,11 @@ void QQuickPropertyChanges::changeExpression(const QString &name, const QString state()->changeBindingInRevertList(object(), name, oldBinding); } - QQmlBinding *newBinding = new QQmlBinding(expression, object(), qmlContext(this)); - newBinding->setTarget(d->property(name)); + auto prop = d->property(name); + QQmlBinding *newBinding = QQmlBinding::create( + &QQmlPropertyPrivate::get(prop)->core, expression, object(), + qmlContext(this)); + newBinding->setTarget(prop); QQmlPropertyPrivate::setBinding(newBinding, QQmlPropertyPrivate::None, QQmlPropertyPrivate::DontRemoveBinding | QQmlPropertyPrivate::BypassInterceptor); } else { QQuickStateAction action; @@ -654,7 +662,9 @@ void QQuickPropertyChanges::changeExpression(const QString &name, const QString action.specifiedObject = object(); action.specifiedProperty = name; - QQmlBinding *newBinding = new QQmlBinding(expression, object(), qmlContext(this)); + QQmlBinding *newBinding = QQmlBinding::create( + &QQmlPropertyPrivate::get(action.property)->core, expression, + object(), qmlContext(this)); if (d->isExplicit) { // don't assign the binding, merely evaluate the expression. // XXX TODO: add a static QQmlJavaScriptExpression::evaluate(QString) |