aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/types/qqmlbind.cpp
diff options
context:
space:
mode:
authorFabian Kosmale <fabian.kosmale@qt.io>2022-10-25 15:46:03 +0200
committerFabian Kosmale <fabian.kosmale@qt.io>2022-11-10 15:00:11 +0100
commit0e4e74bffc102d6e8e3f220562231914b75c8027 (patch)
tree16d43a3e64c9549a31cb4544ae35a81c6e294851 /src/qml/types/qqmlbind.cpp
parentfa0be265e4c6a8528778a41fdd376b26cb70db74 (diff)
QmlComponent::ConstructionState: encapsulate creator
This is a preparatory step to decouple accessing required properties from the existence of a QQmlObjectCreator (which will not exist when existing pure C++ types). Task-number: QTBUG-97156 Change-Id: I5323b018022e99f9ebf9be61d6f9a75b8a5dad48 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/qml/types/qqmlbind.cpp')
-rw-r--r--src/qml/types/qqmlbind.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/qml/types/qqmlbind.cpp b/src/qml/types/qqmlbind.cpp
index a01622f25f..fb9a9d2221 100644
--- a/src/qml/types/qqmlbind.cpp
+++ b/src/qml/types/qqmlbind.cpp
@@ -759,14 +759,14 @@ void QQmlBindPrivate::decodeBinding(
QQmlProperty property(q, propertyName);
if (property.isValid()) {
- if (!immediateState->creator) {
+ if (!immediateState->hasCreator()) {
immediateState->completePending = true;
- immediateState->creator = std::make_unique<QQmlObjectCreator>(
+ immediateState->initCreator(
deferredData->context->parent(), deferredData->compilationUnit,
contextData);
- immediateState->creator->beginPopulateDeferred(deferredData->context);
+ immediateState->creator()->beginPopulateDeferred(deferredData->context);
}
- immediateState->creator->populateDeferredBinding(
+ immediateState->creator()->populateDeferredBinding(
property, deferredData->deferredIdx, binding);
} else {
qmlWarning(q).nospace() << "Unknown name " << propertyName
@@ -882,10 +882,10 @@ void QQmlBindPrivate::buildBindEntries(QQmlBind *q, QQmlComponentPrivate::Deferr
decodeBinding(q, QString(), deferredData, *it, &constructionState);
- if (constructionState.creator.get()) {
+ if (constructionState.hasCreator()) {
++ep->inProgressCreations;
- constructionState.creator->finalizePopulateDeferred();
- constructionState.appendErrors(constructionState.creator->errors);
+ constructionState.creator()->finalizePopulateDeferred();
+ constructionState.appendErrors(constructionState.creator()->errors);
deferredState->push_back(std::move(constructionState));
}
} else {