diff options
author | The Qt Project <gerrit-noreply@qt-project.org> | 2022-10-21 09:02:14 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2022-10-21 09:02:14 +0000 |
commit | 0ad3b09b95c1d3f6090d5096ec40986995cab577 (patch) | |
tree | 9ca2341ccae96d36f23db4941c98689646222033 | |
parent | 79dd4a59ecb4a20e34109ba66cacd8954c5e1e57 (diff) | |
parent | 8beb1fe7755b64cb427ef6658a5312f589a38416 (diff) |
Merge "Merge remote-tracking branch 'origin/8.0' into 9.0" into 9.0
3 files changed, 30 insertions, 2 deletions
diff --git a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowser.qml b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowser.qml index abe06210433..e6b978095dc 100644 --- a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowser.qml +++ b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowser.qml @@ -165,6 +165,21 @@ Item { width: root.width caption: qsTr("Materials") hideHeader: !materialBrowserBundleModel.matBundleExists + dropEnabled: true + + onDropEnter: (drag) => { + drag.accepted = rootView.draggedBundleMaterial + userMaterialsSection.highlight = rootView.draggedBundleMaterial + } + + onDropExit: { + userMaterialsSection.highlight = false + } + + onDrop: { + userMaterialsSection.highlight = false + materialBrowserBundleModel.addToProject(rootView.draggedBundleMaterial) + } Grid { id: grid diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp index c89ec4581fa..c0d9648f28b 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp @@ -117,14 +117,24 @@ bool MaterialBrowserWidget::eventFilter(QObject *obj, QEvent *event) mimeData->setData(Constants::MIME_TYPE_BUNDLE_MATERIAL, data); mimeData->removeFormat("text/plain"); + if (!m_draggedBundleMaterial) { + m_draggedBundleMaterial = m_bundleMaterialToDrag; + emit draggedBundleMaterialChanged(); + } + emit bundleMaterialDragStarted(m_bundleMaterialToDrag); model->startDrag(mimeData, m_bundleMaterialToDrag->icon().toLocalFile()); - m_bundleMaterialToDrag = {}; + m_bundleMaterialToDrag = nullptr; } } } else if (event->type() == QMouseEvent::MouseButtonRelease) { m_materialToDrag = {}; - m_bundleMaterialToDrag = {}; + m_bundleMaterialToDrag = nullptr; + + if (m_draggedBundleMaterial) { + m_draggedBundleMaterial = nullptr; + emit draggedBundleMaterialChanged(); + } } return QObject::eventFilter(obj, event); diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h index 925e7bc2602..42739d83c42 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h @@ -36,6 +36,7 @@ class PreviewImageProvider; class MaterialBrowserWidget : public QFrame { Q_OBJECT + Q_PROPERTY(BundleMaterial *draggedBundleMaterial MEMBER m_draggedBundleMaterial NOTIFY draggedBundleMaterialChanged) public: MaterialBrowserWidget(MaterialBrowserView *view); @@ -59,6 +60,7 @@ public: signals: void bundleMaterialDragStarted(QmlDesigner::BundleMaterial *bundleMat); + void draggedBundleMaterialChanged(); protected: bool eventFilter(QObject *obj, QEvent *event) override; @@ -80,6 +82,7 @@ private: ModelNode m_materialToDrag; BundleMaterial *m_bundleMaterialToDrag = nullptr; + BundleMaterial *m_draggedBundleMaterial = nullptr; QPoint m_dragStartPoint; }; |