From dd2a2f2fe23bf552247f970c90a820e909e804f7 Mon Sep 17 00:00:00 2001 From: Shrief Gabr Date: Thu, 2 Jan 2025 12:55:05 +0200 Subject: [PATCH] QmlDesigner: Allow dropping materials on User Assets Fixes: QDS-14444 Change-Id: Ic3dd93709497cbb9c14eba2ff784ef00d9b975d7 Reviewed-by: Mahmoud Badri --- .../contentLibraryQmlSource/ContentLibraryUserView.qml | 10 +++++++--- .../MaterialBrowserContextMenu.qml | 1 - .../components/contentlibrary/contentlibraryview.cpp | 7 +++++++ .../components/contentlibrary/contentlibrarywidget.h | 1 + 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryUserView.qml b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryUserView.qml index 8269589ffe3..2d373a377f1 100644 --- a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryUserView.qml +++ b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryUserView.qml @@ -116,8 +116,8 @@ Item { onCountChanged: root.assignMaxCount() onDropEnter: (drag) => { - drag.accepted = categoryTitle === "Textures" - && drag.formats[0] === "application/vnd.qtdesignstudio.assets" + drag.accepted = (categoryTitle === "Textures" && drag.formats[0] === "application/vnd.qtdesignstudio.assets") + || (categoryTitle === "Materials" && drag.formats[0] === "application/vnd.qtdesignstudio.material") section.highlight = drag.accepted } @@ -128,9 +128,13 @@ Item { onDrop: (drag) => { section.highlight = false - ContentLibraryBackend.rootView.acceptTexturesDrop(drag.urls) drag.accept() section.expandSection() + + if (categoryTitle === "Textures") + ContentLibraryBackend.rootView.acceptTexturesDrop(drag.urls) + else if (categoryTitle === "Materials") + ContentLibraryBackend.rootView.acceptMaterialDrop(drag.getDataAsString(drag.formats[0])) } Grid { diff --git a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml index 02ee76cd099..cf28242b22e 100644 --- a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml +++ b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml @@ -130,7 +130,6 @@ StudioControls.Menu { StudioControls.MenuItem { text: qsTr("Add to Content Library") - enabled: !materialBrowserModel.selectedMaterialIsComponent onTriggered: MaterialBrowserBackend.rootView.addMaterialToContentLibrary() } diff --git a/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp b/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp index 2f8d5e4e6cb..84462151381 100644 --- a/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp +++ b/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp @@ -100,6 +100,13 @@ WidgetInfo ContentLibraryView::widgetInfo() addLibAssets(paths); }); + connect(m_widget, &ContentLibraryWidget::acceptMaterialDrop, this, + [this](const QString &internalId) { + ModelNode matNode = QmlDesignerPlugin::instance()->viewManager() + .view()->modelNodeForInternalId(internalId.toInt()); + addLibItem(matNode); + }); + connect(m_widget, &ContentLibraryWidget::addTextureRequested, this, diff --git a/src/plugins/qmldesigner/components/contentlibrary/contentlibrarywidget.h b/src/plugins/qmldesigner/components/contentlibrary/contentlibrarywidget.h index cfcff404db7..487811d24db 100644 --- a/src/plugins/qmldesigner/components/contentlibrary/contentlibrarywidget.h +++ b/src/plugins/qmldesigner/components/contentlibrary/contentlibrarywidget.h @@ -125,6 +125,7 @@ signals: void importBundle(); void requestTab(int tabIndex); void acceptTexturesDrop(const QList &urls); + void acceptMaterialDrop(const QString &internalId); protected: bool eventFilter(QObject *obj, QEvent *event) override;