diff --git a/include/wx/msw/webview_edge.h b/include/wx/msw/webview_edge.h index b36fe61324..ffd54f2077 100644 --- a/include/wx/msw/webview_edge.h +++ b/include/wx/msw/webview_edge.h @@ -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); diff --git a/src/msw/webview_edge.cpp b/src/msw/webview_edge.cpp index dc52b28ead..fc2feae8ee 100644 --- a/src/msw/webview_edge.cpp +++ b/src/msw/webview_edge.cpp @@ -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)