summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2022-06-17 14:10:03 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2022-06-22 08:48:54 +0000
commit604342c3af64a423a9c60cae85d7dc5aafb8eb1b (patch)
tree1ffa6ae73b73da6e7e0133eeb65fe1843a47c69e
parent53642c9a2206efbe94898e682365a7adcf239994 (diff)
downloadqt-creator-604342c3af64a423a9c60cae85d7dc5aafb8eb1b.tar.gz
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 <mahmoud.badri@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
-rw-r--r--src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp
index 1af67d4fef..c0e0f9ad3c 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<Import> &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,