From 2dcca95c142499baa7f10ffd99c9f085a06c52cf Mon Sep 17 00:00:00 2001 From: Michal Klocek Date: Mon, 19 Oct 2020 09:57:50 +0200 Subject: Small refactor of startDragging This is required to decouple 'view' logic from page. Change-Id: I84ef8cf729ef87d9339cae3f1bb1f0c709035ccf Reviewed-by: Allan Sandfeld Jensen --- src/core/web_contents_adapter_client.h | 4 +--- src/core/web_contents_view_qt.cpp | 5 +++-- src/webengine/api/qquickwebengineview.cpp | 23 +++++++---------------- src/webengine/api/qquickwebengineview_p_p.h | 4 +--- src/webenginewidgets/api/qwebenginepage.cpp | 16 +++------------- src/webenginewidgets/api/qwebenginepage_p.h | 4 +--- 6 files changed, 16 insertions(+), 40 deletions(-) (limited to 'src') diff --git a/src/core/web_contents_adapter_client.h b/src/core/web_contents_adapter_client.h index ca5ca10de..13ed99a91 100644 --- a/src/core/web_contents_adapter_client.h +++ b/src/core/web_contents_adapter_client.h @@ -238,9 +238,7 @@ public: virtual void updateContentsSize(const QSizeF &size) = 0; virtual void updateNavigationActions() = 0; virtual void updateEditActions() = 0; - virtual void startDragging(const content::DropData &dropData, Qt::DropActions allowedActions, - const QPixmap &pixmap, const QPoint &offset) = 0; - virtual bool supportsDragging() const = 0; + virtual QObject *dragSource() 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 41f1c601e..1ab09895f 100644 --- a/src/core/web_contents_view_qt.cpp +++ b/src/core/web_contents_view_qt.cpp @@ -285,7 +285,8 @@ void WebContentsViewQt::StartDragging(const content::DropData &drop_data, #if QT_CONFIG(draganddrop) Q_UNUSED(event_info); - if (!m_client->supportsDragging()) { + QObject *dragSource = m_client->dragSource(); + if (!dragSource) { if (source_rwh) source_rwh->DragSourceSystemDragEnded(); return; @@ -299,7 +300,7 @@ void WebContentsViewQt::StartDragging(const content::DropData &drop_data, hotspot.setY(image_offset.y()); } - m_client->startDragging(drop_data, toQtDropActions(allowed_ops), pixmap, hotspot); + m_client->webContentsAdapter()->startDragging(dragSource, drop_data, toQtDropActions(allowed_ops), pixmap, hotspot); #endif // QT_CONFIG(draganddrop) } diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index fe9d32b8b..b65202c86 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -1289,25 +1289,16 @@ void QQuickWebEngineViewPrivate::requestGeometryChange(const QRect &geometry, co Q_EMIT q->geometryChangeRequested(geometry, frameGeometry); } -void QQuickWebEngineViewPrivate::startDragging(const content::DropData &dropData, - Qt::DropActions allowedActions, - const QPixmap &pixmap, const QPoint &offset) -{ -#if !QT_CONFIG(draganddrop) - Q_UNUSED(dropData); - Q_UNUSED(allowedActions); - Q_UNUSED(pixmap); - Q_UNUSED(offset); -#else - adapter->startDragging(q_ptr->window(), dropData, allowedActions, pixmap, offset); -#endif // QT_CONFIG(draganddrop) -} - -bool QQuickWebEngineViewPrivate::supportsDragging() const +QObject *QQuickWebEngineViewPrivate::dragSource() const { // QTBUG-57516 // Fixme: This is just a band-aid workaround. - return QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::MultipleWindows); +#if !QT_CONFIG(draganddrop) + return QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::MultipleWindows) ? + q_ptr->window : nullptr; +#else + return nullptr; +#endif } bool QQuickWebEngineViewPrivate::isEnabled() const diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h index b16263d5f..26173ff25 100644 --- a/src/webengine/api/qquickwebengineview_p_p.h +++ b/src/webengine/api/qquickwebengineview_p_p.h @@ -158,9 +158,7 @@ public: void updateContentsSize(const QSizeF &size) override; void updateNavigationActions() override; void updateEditActions() override; - void startDragging(const content::DropData &dropData, Qt::DropActions allowedActions, - const QPixmap &pixmap, const QPoint &offset) override; - bool supportsDragging() const override; + QObject *dragSource() const override; bool isEnabled() const override; void setToolTip(const QString &toolTipText) override; QtWebEngineCore::TouchHandleDrawableClient *createTouchHandle(const QMap &images) override; diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 46f3d610f..b56eb0bbd 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -1770,25 +1770,15 @@ void QWebEnginePagePrivate::requestGeometryChange(const QRect &geometry, const Q Q_EMIT q->geometryChangeRequested(frameGeometry); } -void QWebEnginePagePrivate::startDragging(const content::DropData &dropData, - Qt::DropActions allowedActions, const QPixmap &pixmap, - const QPoint &offset) +QObject *QWebEnginePagePrivate::dragSource() const { #if !QT_CONFIG(draganddrop) - Q_UNUSED(dropData); - Q_UNUSED(allowedActions); - Q_UNUSED(pixmap); - Q_UNUSED(offset); + return view; #else - adapter->startDragging(view, dropData, allowedActions, pixmap, offset); + return nullptr; #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 eb021bf6d..0ecb10b73 100644 --- a/src/webenginewidgets/api/qwebenginepage_p.h +++ b/src/webenginewidgets/api/qwebenginepage_p.h @@ -147,9 +147,7 @@ public: void updateContentsSize(const QSizeF &size) override; void updateNavigationActions() override; void updateEditActions() override; - void startDragging(const content::DropData &dropData, Qt::DropActions allowedActions, - const QPixmap &pixmap, const QPoint &offset) override; - bool supportsDragging() const override; + QObject *dragSource() const override; bool isEnabled() const override; void setToolTip(const QString &toolTipText) override; void printRequested() override; -- cgit v1.2.3