Add wxEVT_WEBVIEW_FULLSCREEN_CHANGED event
The event is triggered by wxWebView when the page requests fullscreen view. It's currently only implemented for the edge backend.
This commit is contained in:
@@ -46,6 +46,7 @@ public:
|
|||||||
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);
|
||||||
@@ -54,6 +55,7 @@ public:
|
|||||||
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);
|
||||||
|
@@ -294,6 +294,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&);
|
||||||
|
@@ -428,6 +428,10 @@ 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 backend.
|
||||||
@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);
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
@@ -72,6 +72,7 @@ wxWebViewEdgeImpl::~wxWebViewEdgeImpl()
|
|||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -296,6 +297,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(), "");
|
||||||
|
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))
|
||||||
@@ -341,6 +358,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