summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnu Aliyas <anu.aliyas@qt.io>2023-12-15 13:37:19 +0100
committerAnu Aliyas <anu.aliyas@qt.io>2023-12-20 15:51:32 +0100
commit5654e6c45c4c0aee8d2d6f4e344b4c8c9dd3d74e (patch)
treea11b30e3894971aa2f5694d78e082173cf2fd7b1
parent19915aa4b598bc11c988b6f6fa04f1061a6aaa3f (diff)
Forward unhandled mouse wheel events to the parent widget
- All mouse wheel events are forwarded to Chromium. - Forward unhandled wheel events by Chromium to the parent widget. - Impersonated QSpontaneKeyEvent in Qt WebEngine to set spontaneous flag and forwarded the event as spontaneous. Fixes: QTBUG-118398 Pick-to: 6.7 6.6 6.5 Change-Id: I4ec831b0077edc3d833fdd7ae8d31a5535b0c05b Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
-rw-r--r--src/core/render_widget_host_view_qt_delegate_item.cpp6
-rw-r--r--src/core/render_widget_host_view_qt_delegate_item.h1
-rw-r--r--src/webenginewidgets/api/qwebengineview.cpp16
3 files changed, 19 insertions, 4 deletions
diff --git a/src/core/render_widget_host_view_qt_delegate_item.cpp b/src/core/render_widget_host_view_qt_delegate_item.cpp
index 1ad664a1f..78ec06bb8 100644
--- a/src/core/render_widget_host_view_qt_delegate_item.cpp
+++ b/src/core/render_widget_host_view_qt_delegate_item.cpp
@@ -449,10 +449,8 @@ void RenderWidgetHostViewQtDelegateItem::updateAdapterClientIfNeeded(WebContents
void RenderWidgetHostViewQtDelegateItem::unhandledWheelEvent(QWheelEvent *ev)
{
- if (QWindow *w = Window()) {
- if (QWindow *p = w->parent())
- qApp->sendEvent(p, ev);
- }
+ if (m_widgetDelegate)
+ m_widgetDelegate->unhandledWheelEvent(ev);
}
} // namespace QtWebEngineCore
diff --git a/src/core/render_widget_host_view_qt_delegate_item.h b/src/core/render_widget_host_view_qt_delegate_item.h
index 082bd7791..55f243eab 100644
--- a/src/core/render_widget_host_view_qt_delegate_item.h
+++ b/src/core/render_widget_host_view_qt_delegate_item.h
@@ -35,6 +35,7 @@ public:
virtual void Destroy() = 0;
virtual void Resize(int, int) { }
virtual QWindow *Window() { return nullptr; }
+ virtual void unhandledWheelEvent(QWheelEvent *) { }
};
// Useful information keyboard and mouse QEvent propagation.
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp
index 8d88726fa..65474506c 100644
--- a/src/webenginewidgets/api/qwebengineview.cpp
+++ b/src/webenginewidgets/api/qwebengineview.cpp
@@ -68,6 +68,14 @@
#include <QThread>
#endif
+QT_BEGIN_NAMESPACE
+class QSpontaneKeyEvent
+{
+public:
+ static inline void makeSpontaneous(QEvent *ev) { ev->setSpontaneous(); }
+};
+QT_END_NAMESPACE
+
namespace QtWebEngineCore {
class WebEngineQuickWidget : public QQuickWidget, public WidgetDelegate
{
@@ -172,6 +180,14 @@ public:
return root->windowHandle();
return nullptr;
}
+ void unhandledWheelEvent(QWheelEvent *ev) override
+ {
+ auto parentWidget = QQuickWidget::parentWidget();
+ if (parentWidget) {
+ QSpontaneKeyEvent::makeSpontaneous(ev);
+ qApp->notify(parentWidget, ev);
+ }
+ }
protected:
void closeEvent(QCloseEvent *event) override