diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2022-10-25 15:46:03 +0200 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2022-11-10 15:00:11 +0100 |
commit | 0e4e74bffc102d6e8e3f220562231914b75c8027 (patch) | |
tree | 16d43a3e64c9549a31cb4544ae35a81c6e294851 /src/qml/types/qqmlbind.cpp | |
parent | fa0be265e4c6a8528778a41fdd376b26cb70db74 (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.cpp | 14 |
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 { |