From 977facbbda3162533932f68997b2d2d777b12018 Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Thu, 22 Jun 2023 15:17:04 +0300 Subject: [PATCH] QmlDesigner: Update content library models when visibility change ...instead of resetting the model. This prevents downloading materials and textures from getting interrupted and is more efficient performance-wise. Fixes: QDS-9654 Change-Id: Id15a86c43ba06aa07071229259b9ea163979b619 Reviewed-by: Reviewed-by: Thomas Hartmann --- .../contentlibrary/contentlibrarymaterialsmodel.cpp | 12 ++++++------ .../contentlibrary/contentlibrarytexturesmodel.cpp | 13 ++++++------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/plugins/qmldesigner/components/contentlibrary/contentlibrarymaterialsmodel.cpp b/src/plugins/qmldesigner/components/contentlibrary/contentlibrarymaterialsmodel.cpp index c25873c77fa..e5ee371002e 100644 --- a/src/plugins/qmldesigner/components/contentlibrary/contentlibrarymaterialsmodel.cpp +++ b/src/plugins/qmldesigner/components/contentlibrary/contentlibrarymaterialsmodel.cpp @@ -332,14 +332,14 @@ void ContentLibraryMaterialsModel::setSearchText(const QString &searchText) m_searchText = lowerSearchText; - bool catVisibilityChanged = false; - for (ContentLibraryMaterialsCategory *cat : std::as_const(m_bundleCategories)) - catVisibilityChanged |= cat->filter(m_searchText); + for (int i = 0; i < m_bundleCategories.size(); ++i) { + ContentLibraryMaterialsCategory *cat = m_bundleCategories.at(i); + bool catVisibilityChanged = cat->filter(m_searchText); + if (catVisibilityChanged) + emit dataChanged(index(i), index(i), {roleNames().keys("bundleCategoryVisible")}); + } updateIsEmpty(); - - if (catVisibilityChanged) - resetModel(); } void ContentLibraryMaterialsModel::updateImportedState(const QStringList &importedMats) diff --git a/src/plugins/qmldesigner/components/contentlibrary/contentlibrarytexturesmodel.cpp b/src/plugins/qmldesigner/components/contentlibrary/contentlibrarytexturesmodel.cpp index 9026d944dab..319ca2686f2 100644 --- a/src/plugins/qmldesigner/components/contentlibrary/contentlibrarytexturesmodel.cpp +++ b/src/plugins/qmldesigner/components/contentlibrary/contentlibrarytexturesmodel.cpp @@ -225,15 +225,14 @@ void ContentLibraryTexturesModel::setSearchText(const QString &searchText) m_searchText = lowerSearchText; - bool catVisibilityChanged = false; - - for (ContentLibraryTexturesCategory *cat : std::as_const(m_bundleCategories)) - catVisibilityChanged |= cat->filter(m_searchText); + for (int i = 0; i < m_bundleCategories.size(); ++i) { + ContentLibraryTexturesCategory *cat = m_bundleCategories.at(i); + bool catVisibilityChanged = cat->filter(m_searchText); + if (catVisibilityChanged) + emit dataChanged(index(i), index(i), {roleNames().keys("bundleCategoryVisible")}); + } updateIsEmpty(); - - if (catVisibilityChanged) - resetModel(); } void ContentLibraryTexturesModel::resetModel()