QmlDesigner: Update material preview images instead of whole refresh

Task-number: QDS-9485
Change-Id: I865c8d39dea4ec0c451f41cbe8c5f603deae4f25
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
Ali Kianian
2023-04-19 13:23:44 +03:00
parent a73fdd8db4
commit 5074c424f1
2 changed files with 14 additions and 7 deletions

View File

@@ -264,12 +264,17 @@ void MaterialBrowserView::refreshModel(bool updateImages)
m_widget->materialBrowserTexturesModel()->setTextures(textures); m_widget->materialBrowserTexturesModel()->setTextures(textures);
m_widget->materialBrowserModel()->setHasMaterialLibrary(matLib.isValid()); m_widget->materialBrowserModel()->setHasMaterialLibrary(matLib.isValid());
if (updateImages) { if (updateImages)
for (const ModelNode &node : std::as_const(materials)) updateMaterialsPreview();
m_previewRequests.insert(node); }
if (!m_previewRequests.isEmpty())
m_previewTimer.start(0); void MaterialBrowserView::updateMaterialsPreview()
} {
const QList<ModelNode> materials = m_widget->materialBrowserModel()->materials();
for (const ModelNode &node : materials)
m_previewRequests.insert(node);
if (!m_previewRequests.isEmpty())
m_previewTimer.start(0);
} }
bool MaterialBrowserView::isMaterial(const ModelNode &node) const bool MaterialBrowserView::isMaterial(const ModelNode &node) const
@@ -540,7 +545,8 @@ void MaterialBrowserView::active3DSceneChanged(qint32 sceneId)
void MaterialBrowserView::currentStateChanged([[maybe_unused]] const ModelNode &node) void MaterialBrowserView::currentStateChanged([[maybe_unused]] const ModelNode &node)
{ {
refreshModel(true); m_widget->materialBrowserTexturesModel()->updateAllTexturesSources();
updateMaterialsPreview();
} }
void MaterialBrowserView::instancesCompleted(const QVector<ModelNode> &completedNodeList) void MaterialBrowserView::instancesCompleted(const QVector<ModelNode> &completedNodeList)

View File

@@ -66,6 +66,7 @@ protected:
private: private:
void refreshModel(bool updateImages); void refreshModel(bool updateImages);
void updateMaterialsPreview();
bool isMaterial(const ModelNode &node) const; bool isMaterial(const ModelNode &node) const;
bool isTexture(const ModelNode &node) const; bool isTexture(const ModelNode &node) const;
void loadPropertyGroups(); void loadPropertyGroups();