diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp index 86d6c69b59f..0f05ed0b39b 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp @@ -212,6 +212,7 @@ bool MaterialBrowserView::isTexture(const ModelNode &node) const void MaterialBrowserView::modelAboutToBeDetached(Model *model) { m_widget->materialBrowserModel()->setMaterials({}, m_hasQuick3DImport); + m_widget->clearPreviewCache(); if (m_propertyGroupsLoaded) { m_propertyGroupsLoaded = false; @@ -301,6 +302,7 @@ void MaterialBrowserView::nodeAboutToBeRemoved(const ModelNode &removedNode) // removing the material editor node if (removedNode.id() == Constants::MATERIAL_LIB_ID) { m_widget->materialBrowserModel()->setMaterials({}, m_hasQuick3DImport); + m_widget->clearPreviewCache(); return; } diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp index ccbd972daa4..d9a3539d249 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp @@ -62,6 +62,11 @@ public: m_pixmaps.insert(node.internalId(), pixmap); } + void clearPixmapCache() + { + m_pixmaps.clear(); + } + QPixmap requestPixmap(const QString &id, QSize *size, [[maybe_unused]] const QSize &requestedSize) override @@ -257,6 +262,11 @@ QQuickWidget *MaterialBrowserWidget::quickWidget() const return m_quickWidget.data(); } +void MaterialBrowserWidget::clearPreviewCache() +{ + m_previewImageProvider->clearPixmapCache(); +} + QPointer MaterialBrowserWidget::materialBrowserModel() const { return m_materialBrowserModel; diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h index 902883aa778..d1c0ef7c8a6 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h @@ -54,6 +54,8 @@ public: QQuickWidget *quickWidget() const; + void clearPreviewCache(); + protected: bool eventFilter(QObject *obj, QEvent *event) override;