From f75666a7e324ebb8f99a4674bd78f0107fe21f93 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 20 Mar 2025 12:21:16 +0200 Subject: [PATCH] QmlDesigner: Fix adding material to user assets Use material index as parameter like other similar functions, as it doesn't rely on being able to interpret QQmlDMAbstractItemModelData as ModelNode, which doesn't appear to work anymore with project storage builds. Also fix typo in a related warning. Fixes: QDS-14993 Change-Id: I41c9895352272c7134c2e00888558a66676f8f83 Reviewed-by: Mahmoud Badri --- .../materialBrowserQmlSource/MaterialBrowserContextMenu.qml | 3 ++- .../components/contentlibrary/contentlibraryview.cpp | 2 +- .../components/materialbrowser/materialbrowserwidget.cpp | 6 ++++-- .../components/materialbrowser/materialbrowserwidget.h | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml index a47b983bd46..38b1b39ea72 100644 --- a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml +++ b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml @@ -138,8 +138,9 @@ StudioControls.Menu { StudioControls.MenuItem { text: qsTr("Add to Content Library") + enabled: root.targetMaterial - onTriggered: MaterialBrowserBackend.rootView.addMaterialToContentLibrary(root.targetMaterial) + onTriggered: MaterialBrowserBackend.rootView.addMaterialToContentLibrary(root.targetIndex) } StudioControls.MenuItem { diff --git a/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp b/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp index 710bd866628..d907e616524 100644 --- a/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp +++ b/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp @@ -720,7 +720,7 @@ void ContentLibraryView::addLibItem(const ModelNode &node, const QPixmap &iconPi bundlePath = Utils::FilePath::fromString(Paths::bundlesPathSetting() + "/User/3d/"); m_bundleId = compUtils.user3DBundleId(); } else { - qWarning() << __FUNCTION__ << "Unsuppported node type"; + qWarning() << __FUNCTION__ << "Unsupported node type"; return; } diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp index 7145f279675..aa5f0a50cc9 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp @@ -371,10 +371,12 @@ void MaterialBrowserWidget::focusMaterialSection(bool focusMatSec) } } -void MaterialBrowserWidget::addMaterialToContentLibrary(const QVariant &material) +void MaterialBrowserWidget::addMaterialToContentLibrary(int idx) { + ModelNode mat = m_materialBrowserModel->materialAt(idx); + QTC_ASSERT(mat, return); + QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("ContentLibrary"); - ModelNode mat = material.value(); m_materialBrowserView->emitCustomNotification("add_material_to_content_lib", {mat}, {m_previewImageProvider->getPixmap(mat)}); // to ContentLibrary } diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h index 0070be56c27..df3e6685c1f 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h @@ -63,7 +63,7 @@ public: Q_INVOKABLE void acceptAssetsDropOnMaterial(int matIndex, const QList &urls); Q_INVOKABLE void acceptTextureDropOnMaterial(int matIndex, const QString &texId); Q_INVOKABLE void focusMaterialSection(bool focusMatSec); - Q_INVOKABLE void addMaterialToContentLibrary(const QVariant &material); + Q_INVOKABLE void addMaterialToContentLibrary(int idx); Q_INVOKABLE void importMaterial(); Q_INVOKABLE void exportMaterial(int idx); Q_INVOKABLE void addQtQuick3D();