aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml
diff options
context:
space:
mode:
authorFabian Kosmale <fabian.kosmale@qt.io>2020-09-03 10:42:30 +0200
committerFabian Kosmale <fabian.kosmale@qt.io>2020-09-04 06:55:55 +0000
commitf942a777f5a6ca241e4a804db518b5f4eb73dcc3 (patch)
treef94fc98d09cec550f3bc5e4a9748e20b543467a2 /src/qml/qml
parente7899df08030030930a3e30f0c8947275328e4f0 (diff)
Adjust to qtbase changes
- isQProperty has been renamed to bindable - QNotifiedProperty is no more - Bindable properties have a function to obtain the QBindable; store that information in the qmltypes files. Task-number: QTBUG-86434 Task-number: QTBUG-86435 Change-Id: I2ba593af1e197d04d2c30cfb9e6904a3d2059e4b Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/qml')
-rw-r--r--src/qml/qml/qqmlboundsignal.cpp2
-rw-r--r--src/qml/qml/qqmlobjectcreator.cpp16
-rw-r--r--src/qml/qml/qqmlpropertycache.cpp2
-rw-r--r--src/qml/qml/qqmlpropertydata_p.h17
-rw-r--r--src/qml/qml/qqmltypecompiler.cpp2
5 files changed, 22 insertions, 17 deletions
diff --git a/src/qml/qml/qqmlboundsignal.cpp b/src/qml/qml/qqmlboundsignal.cpp
index b34ab18a72..5fd06da4bb 100644
--- a/src/qml/qml/qqmlboundsignal.cpp
+++ b/src/qml/qml/qqmlboundsignal.cpp
@@ -365,7 +365,7 @@ void QQmlBoundSignal_callback(QQmlNotifierEndpoint *e, void **a)
////////////////////////////////////////////////////////////////////////
QQmlPropertyObserver::QQmlPropertyObserver(QQmlBoundSignalExpression *expr)
- : QPropertyObserver([](QPropertyObserver *self, void *) {
+ : QPropertyObserver([](QPropertyObserver *self, QUntypedPropertyData *) {
auto This = static_cast<QQmlPropertyObserver*>(self);
This->expression->evaluate(QList<QVariant>());
})
diff --git a/src/qml/qml/qqmlobjectcreator.cpp b/src/qml/qml/qqmlobjectcreator.cpp
index 5eb885c2e0..dc720349a1 100644
--- a/src/qml/qml/qqmlobjectcreator.cpp
+++ b/src/qml/qml/qqmlobjectcreator.cpp
@@ -928,15 +928,17 @@ bool QQmlObjectCreator::setPropertyBinding(const QQmlPropertyData *bindingProper
_bindingTarget, signalIndex, context,
_scopeObject, runtimeFunction, currentQmlContext());
- if (bindingProperty->isQProperty()) {
+ if (bindingProperty->isBindable()) {
auto &observer = QQmlData::get(_scopeObject)->propertyObservers.emplace_back(expr);
- void *argv[] = { &observer };
- _bindingTarget->qt_metacall(QMetaObject::RegisterQPropertyObserver, bindingProperty->coreIndex(), argv);
+ QUntypedBindable bindable;
+ void *argv[] = { &bindable };
+ _bindingTarget->qt_metacall(QMetaObject::BindableProperty, bindingProperty->coreIndex(), argv);
+ bindable.observe(&observer);
} else {
QQmlBoundSignal *bs = new QQmlBoundSignal(_bindingTarget, signalIndex, _scopeObject, engine);
bs->takeExpression(expr);
}
- } else if (bindingProperty->isQProperty()) {
+ } else if (bindingProperty->isBindable()) {
QUntypedPropertyBinding qmlBinding;
if (binding->isTranslationBinding()) {
qmlBinding = QQmlTranslationPropertyBinding::create(bindingProperty, compilationUnit, binding);
@@ -1447,8 +1449,10 @@ bool QQmlObjectCreator::finalize(QQmlInstantiationInterrupt &interrupt)
while (!sharedState->allQPropertyBindings.isEmpty()) {
auto& [target, index, qmlBinding] = sharedState->allQPropertyBindings.last();
- void *argv[] = { &qmlBinding };
- target->qt_metacall(QMetaObject::SetQPropertyBinding, index, argv);
+ QUntypedBindable bindable;
+ void *argv[] = { &bindable };
+ target->qt_metacall(QMetaObject::BindableProperty, index, argv);
+ bindable.setBinding(qmlBinding);
sharedState->allQPropertyBindings.pop_back();
if (watcher.hasRecursed() || interrupt.shouldInterrupt())
return false;
diff --git a/src/qml/qml/qqmlpropertycache.cpp b/src/qml/qml/qqmlpropertycache.cpp
index 5f91b5b94a..0e853f4e28 100644
--- a/src/qml/qml/qqmlpropertycache.cpp
+++ b/src/qml/qml/qqmlpropertycache.cpp
@@ -76,7 +76,7 @@ static QQmlPropertyData::Flags fastFlagsForProperty(const QMetaProperty &p)
flags.setIsResettable(p.isResettable());
flags.setIsFinal(p.isFinal());
flags.setIsRequired(p.isRequired());
- flags.setIsQProperty(p.isQProperty());
+ flags.setIsBindable(p.isBindable());
if (p.isEnumType())
flags.type = QQmlPropertyData::Flags::EnumType;
diff --git a/src/qml/qml/qqmlpropertydata_p.h b/src/qml/qml/qqmlpropertydata_p.h
index 6f1e1b6e4e..3b0a49a6d4 100644
--- a/src/qml/qml/qqmlpropertydata_p.h
+++ b/src/qml/qml/qqmlpropertydata_p.h
@@ -111,7 +111,7 @@ public:
unsigned isSignalHandler : 1; // Function is a signal handler
unsigned isOverload : 1; // Function is an overload of another function
unsigned isRequiredORisCloned : 1; // Has REQUIRED flag OR The function was marked as cloned
- unsigned isConstructorORisQProperty : 1; // The function was marked is a constructor OR property is backed by QProperty<T>
+ unsigned isConstructorORisBindable : 1; // The function was marked is a constructor OR property is backed by QProperty<T>
unsigned isDirect : 1; // Exists on a C++ QMetaObject
unsigned isOverridden : 1; // Is overridden by a extension property
public:
@@ -156,8 +156,9 @@ public:
isOverridden = b;
}
- void setIsQProperty(bool b) {
- isConstructorORisQProperty = b;
+ void setIsBindable(bool b) {
+ Q_ASSERT(type != FunctionType);
+ isConstructorORisBindable = b;
}
void setIsDirect(bool b) {
@@ -208,7 +209,7 @@ public:
void setIsConstructor(bool b) {
Q_ASSERT(type == FunctionType);
- isConstructorORisQProperty = b;
+ isConstructorORisBindable = b;
}
};
@@ -253,8 +254,8 @@ public:
bool isOverload() const { return m_flags.isOverload; }
void setOverload(bool onoff) { m_flags.isOverload = onoff; }
bool isCloned() const { return isFunction() && m_flags.isRequiredORisCloned; }
- bool isConstructor() const { return m_flags.isConstructorORisQProperty; }
- bool isQProperty() const { return m_flags.isConstructorORisQProperty; }
+ bool isConstructor() const { return isFunction() && m_flags.isConstructorORisBindable; }
+ bool isBindable() const { return !isFunction() && m_flags.isConstructorORisBindable; }
bool hasOverride() const { return overrideIndex() >= 0; }
bool hasRevision() const { return revision() != QTypeRevision::zero(); }
@@ -446,7 +447,7 @@ QQmlPropertyData::Flags::Flags()
, isSignalHandler(false)
, isOverload(false)
, isRequiredORisCloned(false)
- , isConstructorORisQProperty(false)
+ , isConstructorORisBindable(false)
, isDirect(false)
, isOverridden(false)
, type(OtherType)
@@ -465,7 +466,7 @@ bool QQmlPropertyData::Flags::operator==(const QQmlPropertyData::Flags &other) c
isSignalHandler == other.isSignalHandler &&
isRequiredORisCloned == other.isRequiredORisCloned &&
type == other.type &&
- isConstructorORisQProperty == other.isConstructorORisQProperty &&
+ isConstructorORisBindable == other.isConstructorORisBindable &&
notFullyResolved == other.notFullyResolved &&
overrideIndexIsProperty == other.overrideIndexIsProperty;
}
diff --git a/src/qml/qml/qqmltypecompiler.cpp b/src/qml/qml/qqmltypecompiler.cpp
index a49722f57e..4be64aecf3 100644
--- a/src/qml/qml/qqmltypecompiler.cpp
+++ b/src/qml/qml/qqmltypecompiler.cpp
@@ -399,7 +399,7 @@ bool SignalHandlerConverter::convertSignalHandlerExpressionsToFunctionDeclaratio
}
parameters += param;
}
- } else if (!signalPropertyData && qPropertyData && qPropertyData->isQProperty()) {
+ } else if (!signalPropertyData && qPropertyData && qPropertyData->isBindable()) {
finalSignalHandlerPropertyName = qPropertyName;
flags = QV4::CompiledData::Binding::IsPropertyObserver;
} else {