From ffe94d177cb28c0657f72b8cd3a9bc6140cebd9b Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Tue, 31 May 2022 17:42:18 +0300 Subject: [PATCH] QmlDesigner: Fix corrupted preview images in material editor/browser Now a default preview image is shown if real preview is not yet available. Fixes: QDS-7055 Change-Id: Ia2f9ee3aa3b29f49224b6ba8ae8f22f1b36f629a Reviewed-by: Mahmoud Badri Reviewed-by: Reviewed-by: Samuel Ghinet --- src/plugins/qmldesigner/CMakeLists.txt | 1 + .../materialbrowser/materialbrowserwidget.cpp | 4 ++++ .../images/defaultmaterialpreview.png | Bin 0 -> 2685 bytes .../components/materialeditor/materialeditor.qrc | 5 +++++ .../materialeditor/materialeditorqmlbackend.cpp | 9 +++++++-- src/plugins/qmldesigner/qmldesignerplugin.qbs | 1 + 6 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 src/plugins/qmldesigner/components/materialeditor/images/defaultmaterialpreview.png create mode 100644 src/plugins/qmldesigner/components/materialeditor/materialeditor.qrc diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt index 9f2c3e091cb..1d56e323e9a 100644 --- a/src/plugins/qmldesigner/CMakeLists.txt +++ b/src/plugins/qmldesigner/CMakeLists.txt @@ -320,6 +320,7 @@ extend_qtc_plugin(QmlDesigner materialeditorqmlbackend.cpp materialeditorqmlbackend.h materialeditortransaction.cpp materialeditortransaction.h materialeditorview.cpp materialeditorview.h + materialeditor.qrc ) extend_qtc_plugin(QmlDesigner diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp index 4ca84cdfb9d..156add5d2da 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp @@ -81,11 +81,15 @@ public: { Q_UNUSED(requestedSize) + static QPixmap defaultPreview = QPixmap::fromImage(QImage(":/materialeditor/images/defaultmaterialpreview.png")); + QPixmap pixmap{150, 150}; qint32 internalId = id.toInt(); if (m_pixmaps.contains(internalId)) pixmap = m_pixmaps.value(internalId); + else + pixmap = defaultPreview; if (size) *size = pixmap.size(); diff --git a/src/plugins/qmldesigner/components/materialeditor/images/defaultmaterialpreview.png b/src/plugins/qmldesigner/components/materialeditor/images/defaultmaterialpreview.png new file mode 100644 index 0000000000000000000000000000000000000000..93073719f55f658c6dfcfb2a2f45e4839567a12b GIT binary patch literal 2685 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 Iol`;+0Psp60ssI2 literal 0 HcmV?d00001 diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditor.qrc b/src/plugins/qmldesigner/components/materialeditor/materialeditor.qrc new file mode 100644 index 00000000000..4ed3c769175 --- /dev/null +++ b/src/plugins/qmldesigner/components/materialeditor/materialeditor.qrc @@ -0,0 +1,5 @@ + + + images/defaultmaterialpreview.png + + diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditorqmlbackend.cpp b/src/plugins/qmldesigner/components/materialeditor/materialeditorqmlbackend.cpp index 828e5fab006..7c5d8436226 100644 --- a/src/plugins/qmldesigner/components/materialeditor/materialeditorqmlbackend.cpp +++ b/src/plugins/qmldesigner/components/materialeditor/materialeditorqmlbackend.cpp @@ -77,16 +77,21 @@ public: { Q_UNUSED(requestedSize) + static QPixmap defaultPreview = QPixmap::fromImage(QImage(":/materialeditor/images/defaultmaterialpreview.png")); + QPixmap pixmap{150, 150}; if (id == "preview") { if (!m_previewPixmap.isNull()) pixmap = m_previewPixmap; + else + pixmap = defaultPreview; } else { - QString path = Core::ICore::resourcePath("qmldesigner/materialEditorQmlSources/images/" + id).toString(); - pixmap = QPixmap{path}; + qWarning() << __FUNCTION__ << "Unsupported image id:" << id; + pixmap.fill(Qt::red); } + if (size) *size = pixmap.size(); diff --git a/src/plugins/qmldesigner/qmldesignerplugin.qbs b/src/plugins/qmldesigner/qmldesignerplugin.qbs index 2d0055b8c93..ed113d4fe57 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.qbs +++ b/src/plugins/qmldesigner/qmldesignerplugin.qbs @@ -693,6 +693,7 @@ Project { "materialeditor/materialeditortransaction.h", "materialeditor/materialeditorview.cpp", "materialeditor/materialeditorview.h", + "materialeditor/materialeditor.qrc", "navigator/iconcheckboxitemdelegate.cpp", "navigator/iconcheckboxitemdelegate.h", "navigator/nameitemdelegate.cpp",