From aaf2e6f0f780681a2f93108823fced585b7e66af Mon Sep 17 00:00:00 2001 From: Samuel Ghinet Date: Thu, 15 Dec 2022 17:50:23 +0200 Subject: [PATCH] QmlDesigner: Fix asset images becoming invalid after delete + recreate The problem was that, for "invalid assets" (i.e. pixmaps of assets that could not be read / did not exist on disk), the "default" thumbnail was saved in the cache -- and thus, when the asset re-appeared on disk, the "default" (invalid) thumbnail was shown. Task-number: QDS-8591 Change-Id: Iec2f3e704c1deef2e7a7c75532518639fdc677e5 Reviewed-by: Miikka Heikkinen Reviewed-by: Mahmoud Badri --- .../assetslibrary/assetslibraryiconprovider.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibraryiconprovider.cpp b/src/plugins/qmldesigner/components/assetslibrary/assetslibraryiconprovider.cpp index bc56e9b7f3f..e9d3b42855c 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibraryiconprovider.cpp +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibraryiconprovider.cpp @@ -25,13 +25,17 @@ QPixmap AssetsLibraryIconProvider::requestPixmap(const QString &id, QSize *size, pixmap = m_thumbnails[id]; } else { pixmap = fetchPixmap(id, requestedSize); - if (pixmap.isNull()) + bool haveValidImage = true; + if (pixmap.isNull()) { pixmap = Utils::StyleHelper::dpiSpecificImageFile(":/AssetsLibrary/images/assets_default.png"); + haveValidImage = false; + } if (requestedSize.isValid()) pixmap = pixmap.scaled(requestedSize, Qt::KeepAspectRatio); - m_thumbnails[id] = pixmap; + if (haveValidImage) + m_thumbnails[id] = pixmap; } if (size) {