diff options
-rw-r--r-- | src/core/web_contents_adapter_client.h | 1 | ||||
-rw-r--r-- | src/core/web_contents_view_qt.cpp | 6 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 7 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview_p_p.h | 1 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.cpp | 5 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage_p.h | 1 |
6 files changed, 21 insertions, 0 deletions
diff --git a/src/core/web_contents_adapter_client.h b/src/core/web_contents_adapter_client.h index 4c5133772..0469867f2 100644 --- a/src/core/web_contents_adapter_client.h +++ b/src/core/web_contents_adapter_client.h @@ -449,6 +449,7 @@ public: virtual void updateContentsSize(const QSizeF &size) = 0; virtual void startDragging(const content::DropData &dropData, Qt::DropActions allowedActions, const QPixmap &pixmap, const QPoint &offset) = 0; + virtual bool supportsDragging() const = 0; virtual bool isEnabled() const = 0; virtual const QObject *holdingQObject() const = 0; virtual void setToolTip(const QString& toolTipText) = 0; diff --git a/src/core/web_contents_view_qt.cpp b/src/core/web_contents_view_qt.cpp index a7895d61c..6b68a9569 100644 --- a/src/core/web_contents_view_qt.cpp +++ b/src/core/web_contents_view_qt.cpp @@ -232,6 +232,12 @@ void WebContentsViewQt::StartDragging(const content::DropData &drop_data, #if QT_CONFIG(draganddrop) Q_UNUSED(event_info); + if (!m_client->supportsDragging()) { + if (source_rwh) + source_rwh->DragSourceSystemDragEnded(); + return; + } + QPixmap pixmap; QPoint hotspot; pixmap = QPixmap::fromImage(toQImage(image.GetRepresentation(m_client->dpiScale()))); diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index fde7b40dc..babfbd014 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -1012,6 +1012,13 @@ void QQuickWebEngineViewPrivate::startDragging(const content::DropData &dropData #endif // QT_CONFIG(draganddrop) } +bool QQuickWebEngineViewPrivate::supportsDragging() const +{ + // QTBUG-57516 + // Fixme: This is just a band-aid workaround. + return QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::MultipleWindows); +} + bool QQuickWebEngineViewPrivate::isEnabled() const { const Q_Q(QQuickWebEngineView); diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h index 73607aa59..1723da7ea 100644 --- a/src/webengine/api/qquickwebengineview_p_p.h +++ b/src/webengine/api/qquickwebengineview_p_p.h @@ -144,6 +144,7 @@ public: void updateContentsSize(const QSizeF &size) override; void startDragging(const content::DropData &dropData, Qt::DropActions allowedActions, const QPixmap &pixmap, const QPoint &offset) override; + bool supportsDragging() const override; bool isEnabled() const override; void setToolTip(const QString &toolTipText) override; const QObject *holdingQObject() const override; diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 8911c63c8..3d0964895 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -1673,6 +1673,11 @@ void QWebEnginePagePrivate::startDragging(const content::DropData &dropData, #endif // QT_CONFIG(draganddrop) } +bool QWebEnginePagePrivate::supportsDragging() const +{ + return true; +} + bool QWebEnginePagePrivate::isEnabled() const { const Q_Q(QWebEnginePage); diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h index dc7d02b73..fde877255 100644 --- a/src/webenginewidgets/api/qwebenginepage_p.h +++ b/src/webenginewidgets/api/qwebenginepage_p.h @@ -142,6 +142,7 @@ public: void updateContentsSize(const QSizeF &size) override; void startDragging(const content::DropData &dropData, Qt::DropActions allowedActions, const QPixmap &pixmap, const QPoint &offset) override; + bool supportsDragging() const override; bool isEnabled() const override; void setToolTip(const QString &toolTipText) override; const QObject *holdingQObject() const override; |