From 604342c3af64a423a9c60cae85d7dc5aafb8eb1b Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 17 Jun 2022 14:10:03 +0300 Subject: [PATCH] QmlDesigner: Add some delays to material browser refreshing Import change causes puppet to reset, so bit of delay is needed there before triggering material browser refresh. Also added similar delay to refresh done at model attach as it seems puppet reset can sometimes be triggered after attach as well. Fixes: QDS-7172 Change-Id: I47f7af54e55af074fb2b9e8cdb9e78fb051a16cc Reviewed-by: Mahmoud Badri Reviewed-by: Reviewed-by: Qt CI Bot --- .../materialbrowser/materialbrowserview.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp index 1af67d4fef7..c0e0f9ad3cb 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp @@ -97,7 +97,10 @@ void MaterialBrowserView::modelAttached(Model *model) m_widget->clearSearchFilter(); m_hasQuick3DImport = model->hasImport("QtQuick3D"); - QTimer::singleShot(0, this, [this]() { + + // Project load is already very busy and may even trigger puppet reset, so let's wait a moment + // before refreshing the model + QTimer::singleShot(1000, this, [this]() { refreshModel(true); }); } @@ -257,7 +260,17 @@ void MaterialBrowserView::importsChanged(const QList &addedImports, cons return; m_hasQuick3DImport = hasQuick3DImport; - refreshModel(true); + + if (m_hasQuick3DImport) { + // Import change will trigger puppet reset. + // However, it doesn't seem to trigger the notification about the reset, so wait here. + QTimer::singleShot(1000, this, [this]() { + refreshModel(true); + }); + } else { + // No quick3d import, so we can refresh immediately to clear the browser + refreshModel(true); + } } void MaterialBrowserView::customNotification(const AbstractView *view, const QString &identifier,