Notify WebView2 API when minimizing a window with wxWebView

As suggested by the ICoreWebView2Controller documentation
call put_isVisible() when the window containing the
wxWebViewEdge is minimized/restored.
This commit is contained in:
Tobias Taschner
2021-02-07 21:48:02 +01:00
parent 623e6a4fc3
commit 334872e726
2 changed files with 15 additions and 0 deletions

View File

@@ -105,6 +105,8 @@ private:
void OnSize(wxSizeEvent& event);
void OnTopLevelParentIconized(wxIconizeEvent& event);
bool RunScriptSync(const wxString& javascript, wxString* output = NULL) const;
wxDECLARE_DYNAMIC_CLASS(wxWebViewEdge);

View File

@@ -363,6 +363,9 @@ ICoreWebView2Settings* wxWebViewEdgeImpl::GetSettings()
wxWebViewEdge::~wxWebViewEdge()
{
wxWindow* topLevelParent = wxGetTopLevelParent(this);
if (topLevelParent)
topLevelParent->Unbind(wxEVT_ICONIZE, &wxWebViewEdge::OnTopLevelParentIconized, this);
delete m_impl;
}
@@ -387,6 +390,9 @@ bool wxWebViewEdge::Create(wxWindow* parent,
if (!m_impl->Create())
return false;
Bind(wxEVT_SIZE, &wxWebViewEdge::OnSize, this);
wxWindow* topLevelParent = wxGetTopLevelParent(this);
if (topLevelParent)
topLevelParent->Bind(wxEVT_ICONIZE, &wxWebViewEdge::OnTopLevelParentIconized, this);
LoadURL(url);
return true;
@@ -398,6 +404,13 @@ void wxWebViewEdge::OnSize(wxSizeEvent& event)
event.Skip();
}
void wxWebViewEdge::OnTopLevelParentIconized(wxIconizeEvent& event)
{
if (m_impl && m_impl->m_webViewController)
m_impl->m_webViewController->put_IsVisible(!event.IsIconized());
event.Skip();
}
void wxWebViewEdge::LoadURL(const wxString& url)
{
if (!m_impl->m_webView)