From a19270df8f094b9a2581c313d317b31db0c38a31 Mon Sep 17 00:00:00 2001 From: Tobias Taschner Date: Thu, 16 Jan 2020 10:26:14 +0100 Subject: [PATCH] Implement title changed event --- include/wx/msw/private/webview_edge.h | 2 ++ src/msw/webview_edge.cpp | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/include/wx/msw/private/webview_edge.h b/include/wx/msw/private/webview_edge.h index 4aca6fae4a..c1c72c0fba 100644 --- a/include/wx/msw/private/webview_edge.h +++ b/include/wx/msw/private/webview_edge.h @@ -36,11 +36,13 @@ public: EventRegistrationToken m_navigationStartingToken = { }; EventRegistrationToken m_navigationCompletedToken = { }; EventRegistrationToken m_newWindowRequestedToken = { }; + EventRegistrationToken m_documentTitleChangedToken = { }; // WebView Event handlers HRESULT OnNavigationStarting(IWebView2WebView* sender, IWebView2NavigationStartingEventArgs* args); HRESULT OnNavigationCompleted(IWebView2WebView* sender, IWebView2NavigationCompletedEventArgs* args); HRESULT OnNewWindowRequested(IWebView2WebView* sender, IWebView2NewWindowRequestedEventArgs* args); + HRESULT OnDocumentTitleChanged(IWebView2WebView* sender, IUnknown* args); HRESULT OnEnvironmentCreated(HRESULT result, IWebView2Environment* environment); HRESULT OnWebViewCreated(HRESULT result, IWebView2WebView* webview); diff --git a/src/msw/webview_edge.cpp b/src/msw/webview_edge.cpp index 388e9ae8cc..4d8b1f9428 100644 --- a/src/msw/webview_edge.cpp +++ b/src/msw/webview_edge.cpp @@ -69,6 +69,7 @@ wxWebViewEdgeImpl::~wxWebViewEdgeImpl() m_webView->remove_NavigationCompleted(m_navigationCompletedToken); m_webView->remove_NavigationStarting(m_navigationStartingToken); m_webView->remove_NewWindowRequested(m_newWindowRequestedToken); + m_webView->remove_DocumentTitleChanged(m_documentTitleChangedToken); } } @@ -255,6 +256,16 @@ HRESULT wxWebViewEdgeImpl::OnNewWindowRequested(IWebView2WebView* WXUNUSED(sende return S_OK; } +HRESULT wxWebViewEdgeImpl::OnDocumentTitleChanged(IWebView2WebView* WXUNUSED(sender), IUnknown* WXUNUSED(args)) +{ + wxWebViewEvent event(wxEVT_WEBVIEW_TITLE_CHANGED, + m_ctrl->GetId(), m_ctrl->GetCurrentURL(), ""); + event.SetString(m_ctrl->GetCurrentTitle()); + event.SetEventObject(m_ctrl); + m_ctrl->HandleWindowEvent(event); + return S_OK; +} + HRESULT wxWebViewEdgeImpl::OnWebViewCreated(HRESULT result, IWebView2WebView* webview) { if (FAILED(result)) @@ -281,6 +292,10 @@ HRESULT wxWebViewEdgeImpl::OnWebViewCreated(HRESULT result, IWebView2WebView* we Callback( this, &wxWebViewEdgeImpl::OnNewWindowRequested).Get(), &m_newWindowRequestedToken); + m_webView->add_DocumentTitleChanged( + Callback( + this, &wxWebViewEdgeImpl::OnDocumentTitleChanged).Get(), + &m_documentTitleChangedToken); if (!m_pendingURL.empty()) {