diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/webengine/render_widget_host_view_qt_delegate_quick.cpp | 11 | ||||
-rw-r--r-- | src/webengine/render_widget_host_view_qt_delegate_quick.h | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp index 9fc1ed3eb..508420cf8 100644 --- a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp +++ b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp @@ -268,10 +268,15 @@ void RenderWidgetHostViewQtDelegateQuick::itemChange(ItemChange change, const It if (value.window) { m_windowConnections.append(connect(value.window, SIGNAL(xChanged(int)), SLOT(onWindowPosChanged()))); m_windowConnections.append(connect(value.window, SIGNAL(yChanged(int)), SLOT(onWindowPosChanged()))); + if (!m_isPopup) + m_windowConnections.append(connect(value.window, SIGNAL(closing(QQuickCloseEvent *)), SLOT(onHide()))); } if (m_initialized) m_client->windowChanged(); + } else if (change == QQuickItem::ItemVisibleHasChanged) { + if (!m_isPopup && !value.boolValue) + onHide(); } } @@ -285,4 +290,10 @@ void RenderWidgetHostViewQtDelegateQuick::onWindowPosChanged() m_client->windowBoundsChanged(); } +void RenderWidgetHostViewQtDelegateQuick::onHide() +{ + QFocusEvent event(QEvent::FocusOut, Qt::OtherFocusReason); + m_client->forwardEvent(&event); +} + } // namespace QtWebEngineCore diff --git a/src/webengine/render_widget_host_view_qt_delegate_quick.h b/src/webengine/render_widget_host_view_qt_delegate_quick.h index eb2860b27..7c44da9b9 100644 --- a/src/webengine/render_widget_host_view_qt_delegate_quick.h +++ b/src/webengine/render_widget_host_view_qt_delegate_quick.h @@ -92,6 +92,7 @@ protected: private slots: void onWindowPosChanged(); + void onHide(); private: RenderWidgetHostViewQtDelegateClient *m_client; |