Merge branch 'msw_webview_edge4' of https://github.com/TcT2k/wxWidgets
Fix missing events for in-document navigation with wxWebViewEdge, implement Find() for it and add wxEVT_WEBVIEW_FULLSCREEN_CHANGED for it and wxGTK. See https://github.com/wxWidgets/wxWidgets/pull/2227
This commit is contained in:
@@ -41,17 +41,21 @@ public:
|
|||||||
|
|
||||||
// WebView Events tokens
|
// WebView Events tokens
|
||||||
EventRegistrationToken m_navigationStartingToken = { };
|
EventRegistrationToken m_navigationStartingToken = { };
|
||||||
|
EventRegistrationToken m_sourceChangedToken = { };
|
||||||
EventRegistrationToken m_navigationCompletedToken = { };
|
EventRegistrationToken m_navigationCompletedToken = { };
|
||||||
EventRegistrationToken m_newWindowRequestedToken = { };
|
EventRegistrationToken m_newWindowRequestedToken = { };
|
||||||
EventRegistrationToken m_documentTitleChangedToken = { };
|
EventRegistrationToken m_documentTitleChangedToken = { };
|
||||||
EventRegistrationToken m_contentLoadingToken = { };
|
EventRegistrationToken m_contentLoadingToken = { };
|
||||||
|
EventRegistrationToken m_containsFullScreenElementChangedToken = { };
|
||||||
|
|
||||||
// WebView Event handlers
|
// WebView Event handlers
|
||||||
HRESULT OnNavigationStarting(ICoreWebView2* sender, ICoreWebView2NavigationStartingEventArgs* args);
|
HRESULT OnNavigationStarting(ICoreWebView2* sender, ICoreWebView2NavigationStartingEventArgs* args);
|
||||||
|
HRESULT OnSourceChanged(ICoreWebView2* sender, ICoreWebView2SourceChangedEventArgs* args);
|
||||||
HRESULT OnNavigationCompleted(ICoreWebView2* sender, ICoreWebView2NavigationCompletedEventArgs* args);
|
HRESULT OnNavigationCompleted(ICoreWebView2* sender, ICoreWebView2NavigationCompletedEventArgs* args);
|
||||||
HRESULT OnNewWindowRequested(ICoreWebView2* sender, ICoreWebView2NewWindowRequestedEventArgs* args);
|
HRESULT OnNewWindowRequested(ICoreWebView2* sender, ICoreWebView2NewWindowRequestedEventArgs* args);
|
||||||
HRESULT OnDocumentTitleChanged(ICoreWebView2* sender, IUnknown* args);
|
HRESULT OnDocumentTitleChanged(ICoreWebView2* sender, IUnknown* args);
|
||||||
HRESULT OnContentLoading(ICoreWebView2* sender, ICoreWebView2ContentLoadingEventArgs* args);
|
HRESULT OnContentLoading(ICoreWebView2* sender, ICoreWebView2ContentLoadingEventArgs* args);
|
||||||
|
HRESULT OnContainsFullScreenElementChanged(ICoreWebView2* sender, IUnknown* args);
|
||||||
|
|
||||||
HRESULT OnEnvironmentCreated(HRESULT result, ICoreWebView2Environment* environment);
|
HRESULT OnEnvironmentCreated(HRESULT result, ICoreWebView2Environment* environment);
|
||||||
HRESULT OnWebViewCreated(HRESULT result, ICoreWebView2Controller* webViewController);
|
HRESULT OnWebViewCreated(HRESULT result, ICoreWebView2Controller* webViewController);
|
||||||
|
@@ -257,6 +257,7 @@ private:
|
|||||||
static wxStringWebViewFactoryMap::iterator FindFactory(const wxString &backend);
|
static wxStringWebViewFactoryMap::iterator FindFactory(const wxString &backend);
|
||||||
|
|
||||||
bool m_showMenu;
|
bool m_showMenu;
|
||||||
|
wxString m_findText;
|
||||||
static wxStringWebViewFactoryMap m_factoryMap;
|
static wxStringWebViewFactoryMap m_factoryMap;
|
||||||
|
|
||||||
wxDECLARE_ABSTRACT_CLASS(wxWebView);
|
wxDECLARE_ABSTRACT_CLASS(wxWebView);
|
||||||
@@ -294,6 +295,7 @@ wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEBVIEW, wxEVT_WEBVIEW_LOADED, wxWebViewEv
|
|||||||
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEBVIEW, wxEVT_WEBVIEW_ERROR, wxWebViewEvent );
|
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEBVIEW, wxEVT_WEBVIEW_ERROR, wxWebViewEvent );
|
||||||
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEBVIEW, wxEVT_WEBVIEW_NEWWINDOW, wxWebViewEvent );
|
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEBVIEW, wxEVT_WEBVIEW_NEWWINDOW, wxWebViewEvent );
|
||||||
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEBVIEW, wxEVT_WEBVIEW_TITLE_CHANGED, wxWebViewEvent );
|
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEBVIEW, wxEVT_WEBVIEW_TITLE_CHANGED, wxWebViewEvent );
|
||||||
|
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEBVIEW, wxEVT_WEBVIEW_FULLSCREEN_CHANGED, wxWebViewEvent);
|
||||||
|
|
||||||
typedef void (wxEvtHandler::*wxWebViewEventFunction)
|
typedef void (wxEvtHandler::*wxWebViewEventFunction)
|
||||||
(wxWebViewEvent&);
|
(wxWebViewEvent&);
|
||||||
|
@@ -317,7 +317,7 @@ public:
|
|||||||
<a href="https://docs.microsoft.com/en-us/microsoft-edge/hosting/webview2">Edge WebView2</a>.
|
<a href="https://docs.microsoft.com/en-us/microsoft-edge/hosting/webview2">Edge WebView2</a>.
|
||||||
It is available for Windows 7 and newer.
|
It is available for Windows 7 and newer.
|
||||||
The following features are currently unsupported with this backend:
|
The following features are currently unsupported with this backend:
|
||||||
virtual filesystems, custom urls, find.
|
virtual filesystems, custom urls.
|
||||||
|
|
||||||
This backend is not enabled by default, to build it follow these steps:
|
This backend is not enabled by default, to build it follow these steps:
|
||||||
- Visual Studio 2015, or newer, is required
|
- Visual Studio 2015, or newer, is required
|
||||||
@@ -428,6 +428,11 @@ public:
|
|||||||
@event{EVT_WEBVIEW_TITLE_CHANGED(id, func)}
|
@event{EVT_WEBVIEW_TITLE_CHANGED(id, func)}
|
||||||
Process a @c wxEVT_WEBVIEW_TITLE_CHANGED event, generated when
|
Process a @c wxEVT_WEBVIEW_TITLE_CHANGED event, generated when
|
||||||
the page title changes. Use GetString to get the title.
|
the page title changes. Use GetString to get the title.
|
||||||
|
@event{EVT_WEBVIEW_FULL_SCREEN_CHANGED(id, func)}
|
||||||
|
Process a @c EVT_WEBVIEW_FULL_SCREEN_CHANGED event, generated when
|
||||||
|
the page wants to enter or leave fullscreen. Use GetInt to get the status.
|
||||||
|
Currently only implemented for the edge and WebKit2GTK+ backend
|
||||||
|
and is only available in wxWidgets 3.1.5 or later.
|
||||||
@endEventTable
|
@endEventTable
|
||||||
|
|
||||||
@since 2.9.3
|
@since 2.9.3
|
||||||
|
@@ -120,6 +120,7 @@ public:
|
|||||||
void OnDocumentLoaded(wxWebViewEvent& evt);
|
void OnDocumentLoaded(wxWebViewEvent& evt);
|
||||||
void OnNewWindow(wxWebViewEvent& evt);
|
void OnNewWindow(wxWebViewEvent& evt);
|
||||||
void OnTitleChanged(wxWebViewEvent& evt);
|
void OnTitleChanged(wxWebViewEvent& evt);
|
||||||
|
void OnFullScreenChanged(wxWebViewEvent& evt);
|
||||||
void OnSetPage(wxCommandEvent& evt);
|
void OnSetPage(wxCommandEvent& evt);
|
||||||
void OnViewSourceRequest(wxCommandEvent& evt);
|
void OnViewSourceRequest(wxCommandEvent& evt);
|
||||||
void OnViewTextRequest(wxCommandEvent& evt);
|
void OnViewTextRequest(wxCommandEvent& evt);
|
||||||
@@ -321,7 +322,7 @@ WebFrame::WebFrame(const wxString& url) :
|
|||||||
m_toolbar_forward = m_toolbar->AddTool(wxID_ANY, _("Forward"), forward);
|
m_toolbar_forward = m_toolbar->AddTool(wxID_ANY, _("Forward"), forward);
|
||||||
m_toolbar_stop = m_toolbar->AddTool(wxID_ANY, _("Stop"), stop);
|
m_toolbar_stop = m_toolbar->AddTool(wxID_ANY, _("Stop"), stop);
|
||||||
m_toolbar_reload = m_toolbar->AddTool(wxID_ANY, _("Reload"), refresh);
|
m_toolbar_reload = m_toolbar->AddTool(wxID_ANY, _("Reload"), refresh);
|
||||||
m_url = new wxTextCtrl(m_toolbar, wxID_ANY, "", wxDefaultPosition, wxSize(400, -1), wxTE_PROCESS_ENTER );
|
m_url = new wxTextCtrl(m_toolbar, wxID_ANY, "", wxDefaultPosition, FromDIP(wxSize(400, -1)), wxTE_PROCESS_ENTER );
|
||||||
m_toolbar->AddControl(m_url, _("URL"));
|
m_toolbar->AddControl(m_url, _("URL"));
|
||||||
m_toolbar_tools = m_toolbar->AddTool(wxID_ANY, _("Menu"), wxBitmap(wxlogo_xpm));
|
m_toolbar_tools = m_toolbar->AddTool(wxID_ANY, _("Menu"), wxBitmap(wxlogo_xpm));
|
||||||
|
|
||||||
@@ -409,7 +410,7 @@ WebFrame::WebFrame(const wxString& url) :
|
|||||||
SetSizer(topsizer);
|
SetSizer(topsizer);
|
||||||
|
|
||||||
//Set a more sensible size for web browsing
|
//Set a more sensible size for web browsing
|
||||||
SetSize(wxSize(800, 600));
|
SetSize(FromDIP(wxSize(800, 600)));
|
||||||
|
|
||||||
// Create the Tools menu
|
// Create the Tools menu
|
||||||
m_tools_menu = new wxMenu();
|
m_tools_menu = new wxMenu();
|
||||||
@@ -536,6 +537,7 @@ WebFrame::WebFrame(const wxString& url) :
|
|||||||
Bind(wxEVT_WEBVIEW_ERROR, &WebFrame::OnError, this, m_browser->GetId());
|
Bind(wxEVT_WEBVIEW_ERROR, &WebFrame::OnError, this, m_browser->GetId());
|
||||||
Bind(wxEVT_WEBVIEW_NEWWINDOW, &WebFrame::OnNewWindow, this, m_browser->GetId());
|
Bind(wxEVT_WEBVIEW_NEWWINDOW, &WebFrame::OnNewWindow, this, m_browser->GetId());
|
||||||
Bind(wxEVT_WEBVIEW_TITLE_CHANGED, &WebFrame::OnTitleChanged, this, m_browser->GetId());
|
Bind(wxEVT_WEBVIEW_TITLE_CHANGED, &WebFrame::OnTitleChanged, this, m_browser->GetId());
|
||||||
|
Bind(wxEVT_WEBVIEW_FULLSCREEN_CHANGED, &WebFrame::OnFullScreenChanged, this, m_browser->GetId());
|
||||||
|
|
||||||
// Connect the menu events
|
// Connect the menu events
|
||||||
Bind(wxEVT_MENU, &WebFrame::OnSetPage, this, setPage->GetId());
|
Bind(wxEVT_MENU, &WebFrame::OnSetPage, this, setPage->GetId());
|
||||||
@@ -897,6 +899,12 @@ void WebFrame::OnTitleChanged(wxWebViewEvent& evt)
|
|||||||
wxLogMessage("%s", "Title changed; title='" + evt.GetString() + "'");
|
wxLogMessage("%s", "Title changed; title='" + evt.GetString() + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebFrame::OnFullScreenChanged(wxWebViewEvent & evt)
|
||||||
|
{
|
||||||
|
wxLogMessage("Full screen changed; status = %d", evt.GetInt());
|
||||||
|
ShowFullScreen(evt.GetInt() != 0);
|
||||||
|
}
|
||||||
|
|
||||||
void WebFrame::OnSetPage(wxCommandEvent& WXUNUSED(evt))
|
void WebFrame::OnSetPage(wxCommandEvent& WXUNUSED(evt))
|
||||||
{
|
{
|
||||||
m_browser->SetPage
|
m_browser->SetPage
|
||||||
|
@@ -48,6 +48,7 @@ wxDEFINE_EVENT( wxEVT_WEBVIEW_LOADED, wxWebViewEvent );
|
|||||||
wxDEFINE_EVENT( wxEVT_WEBVIEW_ERROR, wxWebViewEvent );
|
wxDEFINE_EVENT( wxEVT_WEBVIEW_ERROR, wxWebViewEvent );
|
||||||
wxDEFINE_EVENT( wxEVT_WEBVIEW_NEWWINDOW, wxWebViewEvent );
|
wxDEFINE_EVENT( wxEVT_WEBVIEW_NEWWINDOW, wxWebViewEvent );
|
||||||
wxDEFINE_EVENT( wxEVT_WEBVIEW_TITLE_CHANGED, wxWebViewEvent );
|
wxDEFINE_EVENT( wxEVT_WEBVIEW_TITLE_CHANGED, wxWebViewEvent );
|
||||||
|
wxDEFINE_EVENT( wxEVT_WEBVIEW_FULLSCREEN_CHANGED, wxWebViewEvent);
|
||||||
|
|
||||||
wxStringWebViewFactoryMap wxWebView::m_factoryMap;
|
wxStringWebViewFactoryMap wxWebView::m_factoryMap;
|
||||||
|
|
||||||
@@ -202,10 +203,23 @@ void wxWebView::SelectAll()
|
|||||||
RunScript("window.getSelection().selectAllChildren(document.body);");
|
RunScript("window.getSelection().selectAllChildren(document.body);");
|
||||||
}
|
}
|
||||||
|
|
||||||
long wxWebView::Find(const wxString& WXUNUSED(text), int WXUNUSED(flags))
|
long wxWebView::Find(const wxString& text, int flags)
|
||||||
{
|
{
|
||||||
// TODO: could probably be implemented by script
|
if (text != m_findText)
|
||||||
return -1;
|
ClearSelection();
|
||||||
|
m_findText = text;
|
||||||
|
wxString output;
|
||||||
|
RunScript(wxString::Format("window.find('%s', %s, %s, %s, %s)",
|
||||||
|
text,
|
||||||
|
(flags & wxWEBVIEW_FIND_MATCH_CASE) ? "true" : "false",
|
||||||
|
(flags & wxWEBVIEW_FIND_BACKWARDS) ? "true" : "false",
|
||||||
|
(flags & wxWEBVIEW_FIND_WRAP) ? "true" : "false",
|
||||||
|
(flags & wxWEBVIEW_FIND_ENTIRE_WORD) ? "true" : "false"
|
||||||
|
), &output);
|
||||||
|
if (output.IsSameAs("false", false))
|
||||||
|
return wxNOT_FOUND;
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
|
@@ -253,6 +253,34 @@ wxgtk_webview_webkit_new_window(WebKitPolicyDecision *decision,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
wxgtk_webview_webkit_enter_fullscreen(WebKitWebView *WXUNUSED(web_view),
|
||||||
|
wxWebViewWebKit *webKitCtrl)
|
||||||
|
{
|
||||||
|
wxWebViewEvent event(wxEVT_WEBVIEW_FULLSCREEN_CHANGED,
|
||||||
|
webKitCtrl->GetId(),
|
||||||
|
wxString(),
|
||||||
|
wxString());
|
||||||
|
event.SetInt(1);
|
||||||
|
webKitCtrl->HandleWindowEvent(event);
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
wxgtk_webview_webkit_leave_fullscreen(WebKitWebView *WXUNUSED(web_view),
|
||||||
|
wxWebViewWebKit *webKitCtrl)
|
||||||
|
{
|
||||||
|
wxWebViewEvent event(wxEVT_WEBVIEW_FULLSCREEN_CHANGED,
|
||||||
|
webKitCtrl->GetId(),
|
||||||
|
wxString(),
|
||||||
|
wxString());
|
||||||
|
event.SetInt(0);
|
||||||
|
webKitCtrl->HandleWindowEvent(event);
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
wxgtk_webview_webkit_decide_policy(WebKitWebView *web_view,
|
wxgtk_webview_webkit_decide_policy(WebKitWebView *web_view,
|
||||||
WebKitPolicyDecision *decision,
|
WebKitPolicyDecision *decision,
|
||||||
@@ -583,6 +611,12 @@ bool wxWebViewWebKit::Create(wxWindow *parent,
|
|||||||
g_signal_connect(m_web_view, "create",
|
g_signal_connect(m_web_view, "create",
|
||||||
G_CALLBACK(wxgtk_webview_webkit_create_webview), this);
|
G_CALLBACK(wxgtk_webview_webkit_create_webview), this);
|
||||||
|
|
||||||
|
g_signal_connect(m_web_view, "enter-fullscreen",
|
||||||
|
G_CALLBACK(wxgtk_webview_webkit_enter_fullscreen), this);
|
||||||
|
|
||||||
|
g_signal_connect(m_web_view, "leave-fullscreen",
|
||||||
|
G_CALLBACK(wxgtk_webview_webkit_leave_fullscreen), this);
|
||||||
|
|
||||||
WebKitFindController* findctrl = webkit_web_view_get_find_controller(m_web_view);
|
WebKitFindController* findctrl = webkit_web_view_get_find_controller(m_web_view);
|
||||||
g_signal_connect(findctrl, "counted-matches",
|
g_signal_connect(findctrl, "counted-matches",
|
||||||
G_CALLBACK(wxgtk_webview_webkit_counted_matches),
|
G_CALLBACK(wxgtk_webview_webkit_counted_matches),
|
||||||
|
@@ -67,10 +67,12 @@ wxWebViewEdgeImpl::~wxWebViewEdgeImpl()
|
|||||||
if (m_webView)
|
if (m_webView)
|
||||||
{
|
{
|
||||||
m_webView->remove_NavigationCompleted(m_navigationCompletedToken);
|
m_webView->remove_NavigationCompleted(m_navigationCompletedToken);
|
||||||
|
m_webView->remove_SourceChanged(m_sourceChangedToken);
|
||||||
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_ContentLoading(m_contentLoadingToken);
|
m_webView->remove_ContentLoading(m_contentLoadingToken);
|
||||||
|
m_webView->remove_ContainsFullScreenElementChanged(m_containsFullScreenElementChangedToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,10 +177,27 @@ HRESULT wxWebViewEdgeImpl::OnNavigationStarting(ICoreWebView2* WXUNUSED(sender),
|
|||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT wxWebViewEdgeImpl::OnSourceChanged(ICoreWebView2 * WXUNUSED(sender), ICoreWebView2SourceChangedEventArgs * args)
|
||||||
|
{
|
||||||
|
BOOL isNewDocument;
|
||||||
|
if (SUCCEEDED(args->get_IsNewDocument(&isNewDocument)) && !isNewDocument)
|
||||||
|
{
|
||||||
|
// navigation within the current document, send apropriate events
|
||||||
|
wxWebViewEvent event(wxEVT_WEBVIEW_NAVIGATING, m_ctrl->GetId(), m_ctrl->GetCurrentURL(), wxString());
|
||||||
|
event.SetEventObject(m_ctrl);
|
||||||
|
m_ctrl->HandleWindowEvent(event);
|
||||||
|
OnNavigationCompleted(NULL, NULL);
|
||||||
|
OnContentLoading(NULL, NULL);
|
||||||
|
}
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
HRESULT wxWebViewEdgeImpl::OnNavigationCompleted(ICoreWebView2* WXUNUSED(sender), ICoreWebView2NavigationCompletedEventArgs* args)
|
HRESULT wxWebViewEdgeImpl::OnNavigationCompleted(ICoreWebView2* WXUNUSED(sender), ICoreWebView2NavigationCompletedEventArgs* args)
|
||||||
{
|
{
|
||||||
BOOL isSuccess;
|
BOOL isSuccess;
|
||||||
if (FAILED(args->get_IsSuccess(&isSuccess)))
|
if (!args)
|
||||||
|
isSuccess = true;
|
||||||
|
else if (FAILED(args->get_IsSuccess(&isSuccess)))
|
||||||
isSuccess = false;
|
isSuccess = false;
|
||||||
m_isBusy = false;
|
m_isBusy = false;
|
||||||
wxString uri = m_ctrl->GetCurrentURL();
|
wxString uri = m_ctrl->GetCurrentURL();
|
||||||
@@ -186,6 +205,7 @@ HRESULT wxWebViewEdgeImpl::OnNavigationCompleted(ICoreWebView2* WXUNUSED(sender)
|
|||||||
if (!isSuccess)
|
if (!isSuccess)
|
||||||
{
|
{
|
||||||
COREWEBVIEW2_WEB_ERROR_STATUS status;
|
COREWEBVIEW2_WEB_ERROR_STATUS status;
|
||||||
|
bool ignoreStatus = false;
|
||||||
|
|
||||||
wxWebViewEvent event(wxEVT_WEBVIEW_ERROR, m_ctrl->GetId(), uri, wxString());
|
wxWebViewEvent event(wxEVT_WEBVIEW_ERROR, m_ctrl->GetId(), uri, wxString());
|
||||||
event.SetEventObject(m_ctrl);
|
event.SetEventObject(m_ctrl);
|
||||||
@@ -208,12 +228,16 @@ HRESULT wxWebViewEdgeImpl::OnNavigationCompleted(ICoreWebView2* WXUNUSED(sender)
|
|||||||
WX_ERROR2_CASE(COREWEBVIEW2_WEB_ERROR_STATUS_DISCONNECTED, wxWEBVIEW_NAV_ERR_CONNECTION)
|
WX_ERROR2_CASE(COREWEBVIEW2_WEB_ERROR_STATUS_DISCONNECTED, wxWEBVIEW_NAV_ERR_CONNECTION)
|
||||||
WX_ERROR2_CASE(COREWEBVIEW2_WEB_ERROR_STATUS_CANNOT_CONNECT, wxWEBVIEW_NAV_ERR_CONNECTION)
|
WX_ERROR2_CASE(COREWEBVIEW2_WEB_ERROR_STATUS_CANNOT_CONNECT, wxWEBVIEW_NAV_ERR_CONNECTION)
|
||||||
WX_ERROR2_CASE(COREWEBVIEW2_WEB_ERROR_STATUS_HOST_NAME_NOT_RESOLVED, wxWEBVIEW_NAV_ERR_CONNECTION)
|
WX_ERROR2_CASE(COREWEBVIEW2_WEB_ERROR_STATUS_HOST_NAME_NOT_RESOLVED, wxWEBVIEW_NAV_ERR_CONNECTION)
|
||||||
WX_ERROR2_CASE(COREWEBVIEW2_WEB_ERROR_STATUS_OPERATION_CANCELED, wxWEBVIEW_NAV_ERR_USER_CANCELLED)
|
|
||||||
WX_ERROR2_CASE(COREWEBVIEW2_WEB_ERROR_STATUS_REDIRECT_FAILED, wxWEBVIEW_NAV_ERR_OTHER)
|
WX_ERROR2_CASE(COREWEBVIEW2_WEB_ERROR_STATUS_REDIRECT_FAILED, wxWEBVIEW_NAV_ERR_OTHER)
|
||||||
WX_ERROR2_CASE(COREWEBVIEW2_WEB_ERROR_STATUS_UNEXPECTED_ERROR, wxWEBVIEW_NAV_ERR_OTHER)
|
WX_ERROR2_CASE(COREWEBVIEW2_WEB_ERROR_STATUS_UNEXPECTED_ERROR, wxWEBVIEW_NAV_ERR_OTHER)
|
||||||
|
case COREWEBVIEW2_WEB_ERROR_STATUS_OPERATION_CANCELED:
|
||||||
|
// This status is triggered by vetoing a wxEVT_WEBVIEW_NAVIGATING event
|
||||||
|
ignoreStatus = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_ctrl->HandleWindowEvent(event);
|
if (!ignoreStatus)
|
||||||
|
m_ctrl->HandleWindowEvent(event);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -278,6 +302,22 @@ HRESULT wxWebViewEdgeImpl::OnContentLoading(ICoreWebView2* WXUNUSED(sender), ICo
|
|||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT wxWebViewEdgeImpl::OnContainsFullScreenElementChanged(ICoreWebView2* WXUNUSED(sender), IUnknown* WXUNUSED(args))
|
||||||
|
{
|
||||||
|
BOOL containsFullscreenEvent;
|
||||||
|
HRESULT hr = m_webView->get_ContainsFullScreenElement(&containsFullscreenEvent);
|
||||||
|
if (FAILED(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
|
wxWebViewEvent event(wxEVT_WEBVIEW_FULLSCREEN_CHANGED, m_ctrl->GetId(),
|
||||||
|
m_ctrl->GetCurrentURL(), wxString());
|
||||||
|
event.SetEventObject(m_ctrl);
|
||||||
|
event.SetInt(containsFullscreenEvent);
|
||||||
|
m_ctrl->HandleWindowEvent(event);
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
HRESULT wxWebViewEdgeImpl::OnWebViewCreated(HRESULT result, ICoreWebView2Controller* webViewController)
|
HRESULT wxWebViewEdgeImpl::OnWebViewCreated(HRESULT result, ICoreWebView2Controller* webViewController)
|
||||||
{
|
{
|
||||||
if (FAILED(result))
|
if (FAILED(result))
|
||||||
@@ -303,6 +343,10 @@ HRESULT wxWebViewEdgeImpl::OnWebViewCreated(HRESULT result, ICoreWebView2Control
|
|||||||
Callback<ICoreWebView2NavigationStartingEventHandler>(
|
Callback<ICoreWebView2NavigationStartingEventHandler>(
|
||||||
this, &wxWebViewEdgeImpl::OnNavigationStarting).Get(),
|
this, &wxWebViewEdgeImpl::OnNavigationStarting).Get(),
|
||||||
&m_navigationStartingToken);
|
&m_navigationStartingToken);
|
||||||
|
m_webView->add_SourceChanged(
|
||||||
|
Callback<ICoreWebView2SourceChangedEventHandler>(
|
||||||
|
this, &wxWebViewEdgeImpl::OnSourceChanged).Get(),
|
||||||
|
&m_sourceChangedToken);
|
||||||
m_webView->add_NavigationCompleted(
|
m_webView->add_NavigationCompleted(
|
||||||
Callback<ICoreWebView2NavigationCompletedEventHandler>(
|
Callback<ICoreWebView2NavigationCompletedEventHandler>(
|
||||||
this, &wxWebViewEdgeImpl::OnNavigationCompleted).Get(),
|
this, &wxWebViewEdgeImpl::OnNavigationCompleted).Get(),
|
||||||
@@ -319,6 +363,10 @@ HRESULT wxWebViewEdgeImpl::OnWebViewCreated(HRESULT result, ICoreWebView2Control
|
|||||||
Callback<ICoreWebView2ContentLoadingEventHandler>(
|
Callback<ICoreWebView2ContentLoadingEventHandler>(
|
||||||
this, &wxWebViewEdgeImpl::OnContentLoading).Get(),
|
this, &wxWebViewEdgeImpl::OnContentLoading).Get(),
|
||||||
&m_contentLoadingToken);
|
&m_contentLoadingToken);
|
||||||
|
m_webView->add_ContainsFullScreenElementChanged(
|
||||||
|
Callback<ICoreWebView2ContainsFullScreenElementChangedEventHandler>(
|
||||||
|
this, &wxWebViewEdgeImpl::OnContainsFullScreenElementChanged).Get(),
|
||||||
|
&m_containsFullScreenElementChangedToken);
|
||||||
|
|
||||||
if (m_pendingContextMenuEnabled != -1)
|
if (m_pendingContextMenuEnabled != -1)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user