Implement title changed event

This commit is contained in:
Tobias Taschner
2020-01-16 10:26:14 +01:00
parent 41f4a21736
commit a19270df8f
2 changed files with 17 additions and 0 deletions

View File

@@ -36,11 +36,13 @@ public:
EventRegistrationToken m_navigationStartingToken = { }; EventRegistrationToken m_navigationStartingToken = { };
EventRegistrationToken m_navigationCompletedToken = { }; EventRegistrationToken m_navigationCompletedToken = { };
EventRegistrationToken m_newWindowRequestedToken = { }; EventRegistrationToken m_newWindowRequestedToken = { };
EventRegistrationToken m_documentTitleChangedToken = { };
// WebView Event handlers // WebView Event handlers
HRESULT OnNavigationStarting(IWebView2WebView* sender, IWebView2NavigationStartingEventArgs* args); HRESULT OnNavigationStarting(IWebView2WebView* sender, IWebView2NavigationStartingEventArgs* args);
HRESULT OnNavigationCompleted(IWebView2WebView* sender, IWebView2NavigationCompletedEventArgs* args); HRESULT OnNavigationCompleted(IWebView2WebView* sender, IWebView2NavigationCompletedEventArgs* args);
HRESULT OnNewWindowRequested(IWebView2WebView* sender, IWebView2NewWindowRequestedEventArgs* args); HRESULT OnNewWindowRequested(IWebView2WebView* sender, IWebView2NewWindowRequestedEventArgs* args);
HRESULT OnDocumentTitleChanged(IWebView2WebView* sender, IUnknown* args);
HRESULT OnEnvironmentCreated(HRESULT result, IWebView2Environment* environment); HRESULT OnEnvironmentCreated(HRESULT result, IWebView2Environment* environment);
HRESULT OnWebViewCreated(HRESULT result, IWebView2WebView* webview); HRESULT OnWebViewCreated(HRESULT result, IWebView2WebView* webview);

View File

@@ -69,6 +69,7 @@ wxWebViewEdgeImpl::~wxWebViewEdgeImpl()
m_webView->remove_NavigationCompleted(m_navigationCompletedToken); m_webView->remove_NavigationCompleted(m_navigationCompletedToken);
m_webView->remove_NavigationStarting(m_navigationStartingToken); m_webView->remove_NavigationStarting(m_navigationStartingToken);
m_webView->remove_NewWindowRequested(m_newWindowRequestedToken); 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; 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) HRESULT wxWebViewEdgeImpl::OnWebViewCreated(HRESULT result, IWebView2WebView* webview)
{ {
if (FAILED(result)) if (FAILED(result))
@@ -281,6 +292,10 @@ HRESULT wxWebViewEdgeImpl::OnWebViewCreated(HRESULT result, IWebView2WebView* we
Callback<IWebView2NewWindowRequestedEventHandler>( Callback<IWebView2NewWindowRequestedEventHandler>(
this, &wxWebViewEdgeImpl::OnNewWindowRequested).Get(), this, &wxWebViewEdgeImpl::OnNewWindowRequested).Get(),
&m_newWindowRequestedToken); &m_newWindowRequestedToken);
m_webView->add_DocumentTitleChanged(
Callback<IWebView2DocumentTitleChangedEventHandler>(
this, &wxWebViewEdgeImpl::OnDocumentTitleChanged).Get(),
&m_documentTitleChangedToken);
if (!m_pendingURL.empty()) if (!m_pendingURL.empty())
{ {