diff options
author | Martin Negyokru <negyokru@inf.u-szeged.hu> | 2022-05-10 13:56:41 +0200 |
---|---|---|
committer | Martin Negyokru <negyokru@inf.u-szeged.hu> | 2022-12-12 18:31:33 +0100 |
commit | 117ed7f5c2bde195dd15a4b6b2cf9c03be088e1e (patch) | |
tree | d83b515c7593205804e5ee5d2db1aadf7c33ccf7 /src/core | |
parent | 48fa0fb2c32df11f0e8df0b8a46d6eddec4f46f3 (diff) |
Add touchSelectionMenu for widgets
[ChangeLog][QWebEngineWidgets] Added touch selection menu.
Task-number: QTBUG-100418
Task-number: QTBUG-91712
Change-Id: Iffb994e429b92389e64cd6a93a0b034d6aa07f66
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/api/qwebenginepage.cpp | 20 | ||||
-rw-r--r-- | src/core/api/qwebenginepage_p.h | 8 | ||||
-rw-r--r-- | src/core/render_widget_host_view_qt.cpp | 3 |
3 files changed, 29 insertions, 2 deletions
diff --git a/src/core/api/qwebenginepage.cpp b/src/core/api/qwebenginepage.cpp index 1b640c940..ac44fad10 100644 --- a/src/core/api/qwebenginepage.cpp +++ b/src/core/api/qwebenginepage.cpp @@ -33,6 +33,7 @@ #include "render_widget_host_view_qt_delegate.h" #include "render_widget_host_view_qt_delegate_client.h" #include "render_widget_host_view_qt_delegate_item.h" +#include "touch_selection_menu_controller.h" #include "web_contents_adapter.h" #include <QAction> @@ -1658,6 +1659,25 @@ QWebEnginePagePrivate::createTouchHandleDelegate(const QMap<int, QImage> &images return view->createTouchHandleDelegate(images); } +void QWebEnginePagePrivate::showTouchSelectionMenu( + QtWebEngineCore::TouchSelectionMenuController *controller, const QRect &selectionBounds, + const QSize &handleSize) +{ + Q_UNUSED(handleSize); + + if (controller->buttonCount() == 1) { + controller->runContextMenu(); + return; + } + + view->showTouchSelectionMenu(controller, selectionBounds); +} + +void QWebEnginePagePrivate::hideTouchSelectionMenu() +{ + view->hideTouchSelectionMenu(); +} + void QWebEnginePagePrivate::lifecycleStateChanged(LifecycleState state) { Q_Q(QWebEnginePage); diff --git a/src/core/api/qwebenginepage_p.h b/src/core/api/qwebenginepage_p.h index a56494a32..800a8ab04 100644 --- a/src/core/api/qwebenginepage_p.h +++ b/src/core/api/qwebenginepage_p.h @@ -79,6 +79,9 @@ public: virtual void hideAutofillPopup() = 0; virtual QtWebEngineCore::TouchHandleDrawableDelegate * createTouchHandleDelegate(const QMap<int, QImage> &) = 0; + virtual void showTouchSelectionMenu(QtWebEngineCore::TouchSelectionMenuController *, + const QRect &) = 0; + virtual void hideTouchSelectionMenu() = 0; }; class Q_WEBENGINECORE_PRIVATE_EXPORT QWebEnginePagePrivate : public QtWebEngineCore::WebContentsAdapterClient @@ -159,8 +162,9 @@ public: void printRequested() override; QtWebEngineCore::TouchHandleDrawableDelegate * createTouchHandleDelegate(const QMap<int, QImage> &) override; - void showTouchSelectionMenu(QtWebEngineCore::TouchSelectionMenuController *, const QRect &, const QSize &) override { } - void hideTouchSelectionMenu() override { } + void showTouchSelectionMenu(QtWebEngineCore::TouchSelectionMenuController *, const QRect &, + const QSize &) override; + void hideTouchSelectionMenu() override; const QObject *holdingQObject() const override; ClientType clientType() override { return QtWebEngineCore::WebContentsAdapterClient::WidgetsClient; } void findTextFinished(const QWebEngineFindTextResult &result) override; diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index 0dd067cc5..5d8f15321 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -217,6 +217,9 @@ RenderWidgetHostViewQt::~RenderWidgetHostViewQt() if (text_input_manager_) text_input_manager_->RemoveObserver(this); + if (host()->delegate()) + m_touchSelectionControllerClient->resetControls(); + m_touchSelectionController.reset(); m_touchSelectionControllerClient.reset(); |