diff options
-rw-r--r-- | src/core/render_widget_host_view_qt_delegate_client.cpp | 10 | ||||
-rw-r--r-- | src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp | 7 |
2 files changed, 8 insertions, 9 deletions
diff --git a/src/core/render_widget_host_view_qt_delegate_client.cpp b/src/core/render_widget_host_view_qt_delegate_client.cpp index 009f2f0ef..e2fb0c694 100644 --- a/src/core/render_widget_host_view_qt_delegate_client.cpp +++ b/src/core/render_widget_host_view_qt_delegate_client.cpp @@ -329,9 +329,13 @@ bool RenderWidgetHostViewQtDelegateClient::forwardEvent(QEvent *event) handleHoverEvent(static_cast<QHoverEvent *>(event)); break; case QEvent::FocusIn: - case QEvent::FocusOut: - handleFocusEvent(static_cast<QFocusEvent *>(event)); - break; + case QEvent::FocusOut: { + // Focus in/out events for popup event do not mean 'parent' focus change + // and should not be handled by Chromium + QFocusEvent *e = static_cast<QFocusEvent *>(event); + if (e->reason() != Qt::PopupFocusReason) + handleFocusEvent(e); + } break; case QEvent::InputMethod: handleInputMethodEvent(static_cast<QInputMethodEvent *>(event)); break; 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 3d4e127dc..05ca9e3b1 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp @@ -75,16 +75,11 @@ protected: } void focusInEvent(QFocusEvent *event) override { - Q_ASSERT(event->reason() != Qt::PopupFocusReason); m_client->forwardEvent(event); } void focusOutEvent(QFocusEvent *event) override { - // The keyboard events are supposed to go to the parent RenderHostView and WebUI - // popups should never have focus, therefore ignore focusOutEvent as losing focus - // will trigger pop close request from blink - if (event->reason() != Qt::PopupFocusReason) - m_client->forwardEvent(event); + m_client->forwardEvent(event); } void inputMethodEvent(QInputMethodEvent *event) override { |