summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
diff options
context:
space:
mode:
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.cpp21
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;