From 0e4e74bffc102d6e8e3f220562231914b75c8027 Mon Sep 17 00:00:00 2001 From: Fabian Kosmale Date: Tue, 25 Oct 2022 15:46:03 +0200 Subject: 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 Reviewed-by: Ulf Hermann --- src/qml/types/qqmlbind.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/qml/types/qqmlbind.cpp') 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( + 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 { -- cgit v1.2.3