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_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);

View File

@@ -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<IWebView2NewWindowRequestedEventHandler>(
this, &wxWebViewEdgeImpl::OnNewWindowRequested).Get(),
&m_newWindowRequestedToken);
m_webView->add_DocumentTitleChanged(
Callback<IWebView2DocumentTitleChangedEventHandler>(
this, &wxWebViewEdgeImpl::OnDocumentTitleChanged).Get(),
&m_documentTitleChangedToken);
if (!m_pendingURL.empty())
{