From 8ea6c34606d4afc0b408debd939d5e6d651adf05 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 21 Mar 2018 12:47:58 +0100 Subject: Do not execute a deferred property when component complete is disabled The Qt Quick Designer disables component complete and completes the items manually at a later point. To avoid undefined behavior on items quickBeginDeferred() should not be called if completion is disabled. Task-number: QTBUG-67152 Change-Id: Ibf5c6c834436889cfda7862ea7b327731a026cf9 Reviewed-by: J-P Nurmi --- src/quicktemplates2/qquickdeferredexecute_p_p.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/quicktemplates2/qquickdeferredexecute_p_p.h b/src/quicktemplates2/qquickdeferredexecute_p_p.h index 400c5734..29d95ee9 100644 --- a/src/quicktemplates2/qquickdeferredexecute_p_p.h +++ b/src/quicktemplates2/qquickdeferredexecute_p_p.h @@ -51,6 +51,8 @@ #include #include +#include + QT_BEGIN_NAMESPACE class QString; @@ -65,6 +67,9 @@ namespace QtQuickPrivate { template void quickBeginDeferred(QObject *object, const QString &property, QQuickDeferredPointer &delegate) { + if (!QQmlVME::componentCompleteEnabled()) + return; + delegate.setExecuting(true); QtQuickPrivate::beginDeferred(object, property); delegate.setExecuting(false); -- cgit v1.2.3