From f8911f56fcd4575fd4f78dcdcb02d49207c6c978 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 23 Feb 2023 16:31:07 +0200 Subject: [PATCH] QmlDesigner: End drag properly in assets and material browser views If drag is accepted but drag ending is not notified to model, other views will not know the drag has ended. Fixes: QDS-9254 Change-Id: I1446bd4b52ce67afc37194c98e5c60e169fb57b9 Reviewed-by: Mahmoud Badri (cherry picked from commit d3d621a7b30cf2a250a6877e828b0794322bd4d8) Reviewed-by: Tim Jenssen --- .../components/assetslibrary/assetslibraryview.cpp | 7 ++++++- .../components/assetslibrary/assetslibrarywidget.cpp | 2 ++ .../components/assetslibrary/assetslibrarywidget.h | 1 + .../components/materialbrowser/materialbrowserwidget.cpp | 4 ++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.cpp b/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.cpp index 17d8da5bb25..3ed096689e5 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.cpp +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.cpp @@ -70,10 +70,15 @@ WidgetInfo AssetsLibraryView::widgetInfo() }); }); - connect(m_widget, &AssetsLibraryWidget::hasMaterialLibraryUpdateRequested, this, [&] () { + connect(m_widget, &AssetsLibraryWidget::hasMaterialLibraryUpdateRequested, this, [&]() { m_widget->setHasMaterialLibrary(model() && materialLibraryNode().isValid() && model()->hasImport("QtQuick3D")); }); + + connect(m_widget, &AssetsLibraryWidget::endDrag, this, [&]() { + if (model()) + model()->endDrag(); + }); } return createWidgetInfo(m_widget.data(), "Assets", WidgetInfo::LeftPane, 0, tr("Assets")); diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp index 9f9fde4992e..33abbbc5dd8 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp @@ -311,6 +311,8 @@ void AssetsLibraryWidget::handleExtFilesDrop(const QList &simpleFilePaths, if (!complexFilePathStrings.empty()) addResources(complexFilePathStrings); + + emit endDrag(); } QSet AssetsLibraryWidget::supportedAssetSuffixes(bool complex) diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.h b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.h index 24be02b2e2f..f6d20dc311a 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.h +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.h @@ -108,6 +108,7 @@ signals: void hasMaterialLibraryUpdateRequested(); void hasMaterialLibraryChanged(); void isDraggingChanged(); + void endDrag(); protected: bool eventFilter(QObject *obj, QEvent *event) override; diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp index 76944eeb225..2f48fc1b73a 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp @@ -267,11 +267,15 @@ void MaterialBrowserWidget::startDragTexture(int index, const QPointF &mousePos) void MaterialBrowserWidget::acceptBundleMaterialDrop() { m_materialBrowserView->emitCustomNotification("drop_bundle_material", {}, {}); // To ContentLibraryView + if (m_materialBrowserView->model()) + m_materialBrowserView->model()->endDrag(); } void MaterialBrowserWidget::acceptBundleTextureDrop() { m_materialBrowserView->emitCustomNotification("drop_bundle_texture", {}, {}); // To ContentLibraryView + if (m_materialBrowserView->model()) + m_materialBrowserView->model()->endDrag(); } void MaterialBrowserWidget::acceptTextureDropOnMaterial(int matIndex, const QString &texId)