diff options
author | Alexandru Croitor <alexandru.croitor@theqtcompany.com> | 2016-05-06 16:12:15 +0200 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@theqtcompany.com> | 2016-05-26 09:05:06 +0000 |
commit | aeea8816a7228e9e89fff15b26005eaaa38fce2d (patch) | |
tree | 30b84b04fcd3ccb4550fb7498a4aa70c6b202444 /src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp | |
parent | 9f576901bb7f676e39a2559ab9aa4138debcae62 (diff) |
Stop disabled QWebEngineView widget from processing input events.
If a QWebEngineView is disabled, input events are still forwarded to
Chromium, thus allowing the user to interact with a web page.
Fix consists in stopping the forwarding of input events in the generic
event handler, just like QWidget::event() does.
Change-Id: Ie822d1f3d640840569a282223d76749686cf3419
Reviewed-by: Michal Klocek <michal.klocek@theqtcompany.com>
Diffstat (limited to 'src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp')
-rw-r--r-- | src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp index 937b26c0b..78840085f 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp @@ -295,6 +295,34 @@ void RenderWidgetHostViewQtDelegateWidget::hideEvent(QHideEvent *event) bool RenderWidgetHostViewQtDelegateWidget::event(QEvent *event) { bool handled = false; + + // Mimic QWidget::event() by ignoring mouse, keyboard, touch and tablet events if the widget is + // disabled. + if (!isEnabled()) { + switch (event->type()) { + case QEvent::TabletPress: + case QEvent::TabletRelease: + case QEvent::TabletMove: + case QEvent::MouseButtonPress: + case QEvent::MouseButtonRelease: + case QEvent::MouseButtonDblClick: + case QEvent::MouseMove: + case QEvent::TouchBegin: + case QEvent::TouchUpdate: + case QEvent::TouchEnd: + case QEvent::TouchCancel: + case QEvent::ContextMenu: + case QEvent::KeyPress: + case QEvent::KeyRelease: +#ifndef QT_NO_WHEELEVENT + case QEvent::Wheel: +#endif + return false; + default: + break; + } + } + if (event->type() == QEvent::MouseButtonDblClick) { // QWidget keeps the Qt4 behavior where the DblClick event would replace the Press event. // QtQuick is different by sending both the Press and DblClick events for the second press |