Send wxEVT_WEBVIEW_LOADED

This commit is contained in:
Tobias Taschner
2020-01-16 19:50:40 +01:00
parent e211e14ace
commit 1a72654d69
2 changed files with 16 additions and 0 deletions

View File

@@ -37,12 +37,14 @@ public:
EventRegistrationToken m_navigationCompletedToken = { }; EventRegistrationToken m_navigationCompletedToken = { };
EventRegistrationToken m_newWindowRequestedToken = { }; EventRegistrationToken m_newWindowRequestedToken = { };
EventRegistrationToken m_documentTitleChangedToken = { }; EventRegistrationToken m_documentTitleChangedToken = { };
EventRegistrationToken m_documentStateChangedToken = { };
// 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 OnDocumentTitleChanged(IWebView2WebView* sender, IUnknown* args);
HRESULT OnDocumentStateChanged(IWebView2WebView* sender, IWebView2DocumentStateChangedEventArgs* 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

@@ -70,6 +70,7 @@ wxWebViewEdgeImpl::~wxWebViewEdgeImpl()
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); m_webView->remove_DocumentTitleChanged(m_documentTitleChangedToken);
m_webView->remove_DocumentStateChanged(m_documentStateChangedToken);
} }
} }
@@ -266,6 +267,15 @@ HRESULT wxWebViewEdgeImpl::OnDocumentTitleChanged(IWebView2WebView* WXUNUSED(sen
return S_OK; return S_OK;
} }
HRESULT wxWebViewEdgeImpl::OnDocumentStateChanged(IWebView2WebView* WXUNUSED(sender), IWebView2DocumentStateChangedEventArgs* WXUNUSED(args))
{
wxWebViewEvent event(wxEVT_WEBVIEW_LOADED, m_ctrl->GetId(),
m_ctrl->GetCurrentURL(), "");
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))
@@ -296,6 +306,10 @@ HRESULT wxWebViewEdgeImpl::OnWebViewCreated(HRESULT result, IWebView2WebView* we
Callback<IWebView2DocumentTitleChangedEventHandler>( Callback<IWebView2DocumentTitleChangedEventHandler>(
this, &wxWebViewEdgeImpl::OnDocumentTitleChanged).Get(), this, &wxWebViewEdgeImpl::OnDocumentTitleChanged).Get(),
&m_documentTitleChangedToken); &m_documentTitleChangedToken);
m_webView->add_DocumentStateChanged(
Callback<IWebView2DocumentStateChangedEventHandler>(
this, &wxWebViewEdgeImpl::OnDocumentStateChanged).Get(),
&m_documentStateChangedToken);
if (!m_pendingURL.empty()) if (!m_pendingURL.empty())
{ {