diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index 59dba2bdb78..c95fd7a30bc 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -55,6 +55,10 @@ #include #include +#include // mouse ungrabbing workaround on quickitems +#include // mouse ungrabbing workaround on quickitems + + namespace QmlDesigner { ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : @@ -369,6 +373,13 @@ void ItemLibraryWidget::setResourcePath(const QString &resourcePath) updateSearch(); } +static void ungrabMouseOnQMLWorldWorkAround(QQuickWidget *quickWidget) +{ + const QQuickWidgetPrivate *widgetPrivate = QQuickWidgetPrivate::get(quickWidget); + if (widgetPrivate && widgetPrivate->offscreenWindow && widgetPrivate->offscreenWindow->mouseGrabberItem()) + widgetPrivate->offscreenWindow->mouseGrabberItem()->ungrabMouse(); +} + void ItemLibraryWidget::startDragAndDrop(QVariant itemLibraryId) { m_currentitemLibraryEntry = itemLibraryId.value(); @@ -380,6 +391,8 @@ void ItemLibraryWidget::startDragAndDrop(QVariant itemLibraryId) drag->setMimeData(mimeData); drag->exec(); + + ungrabMouseOnQMLWorldWorkAround(m_itemViewQuickWidget.data()); } void ItemLibraryWidget::removeImport(const QString &name) diff --git a/src/plugins/qmldesigner/qmldesignerplugin.pro b/src/plugins/qmldesigner/qmldesignerplugin.pro index 154a04167d1..0e002e3cadf 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.pro +++ b/src/plugins/qmldesigner/qmldesignerplugin.pro @@ -1,4 +1,5 @@ QT += quickwidgets +QT += widgets-private quick-private quickwidgets-private core-private gui-private #mouse ungrabbing workaround on quickitems CONFIG += exceptions INCLUDEPATH += $$PWD