diff options
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 | 21 |
1 files changed, 19 insertions, 2 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 fd58a0708..c608ba2aa 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp @@ -59,6 +59,15 @@ namespace QtWebEngineCore { +static bool handleShortcutOverrideEvent(RenderWidgetHostViewQtDelegateClient *client, QKeyEvent *ke) +{ + if (client->handleShortcutOverrideEvent(ke)) + return true; + if (editorActionForKeyEvent(ke) != QWebEnginePage::NoWebAction) + ke->accept(); + return true; +} + class RenderWidgetHostViewQuickItem : public QQuickItem { public: RenderWidgetHostViewQuickItem(RenderWidgetHostViewQtDelegateClient *client) : m_client(client) @@ -68,6 +77,14 @@ public: setFocus(true); } protected: + bool event(QEvent *event) override + { + if (event->type() == QEvent::ShortcutOverride) { + handleShortcutOverrideEvent(m_client, static_cast<QKeyEvent *>(event)); + return true; + } + return QQuickItem::event(event); + } void focusInEvent(QFocusEvent *event) override { m_client->forwardEvent(event); @@ -437,8 +454,8 @@ bool RenderWidgetHostViewQtDelegateWidget::event(QEvent *event) // We forward focus events later, once they have made it to the m_rootItem. return QQuickWidget::event(event); case QEvent::ShortcutOverride: - if (editorActionForKeyEvent(static_cast<QKeyEvent*>(event)) != QWebEnginePage::NoWebAction) { - event->accept(); + if (event->type() == QEvent::ShortcutOverride) { + handleShortcutOverrideEvent(m_client, static_cast<QKeyEvent *>(event)); return true; } break; |