summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorMartin Negyokru <negyokru@inf.u-szeged.hu>2022-05-10 13:56:41 +0200
committerMartin Negyokru <negyokru@inf.u-szeged.hu>2022-12-12 18:31:33 +0100
commit117ed7f5c2bde195dd15a4b6b2cf9c03be088e1e (patch)
treed83b515c7593205804e5ee5d2db1aadf7c33ccf7 /src/core
parent48fa0fb2c32df11f0e8df0b8a46d6eddec4f46f3 (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.cpp20
-rw-r--r--src/core/api/qwebenginepage_p.h8
-rw-r--r--src/core/render_widget_host_view_qt.cpp3
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();