From bda92795bba29cd110f92b201cf4c8ef7ee5855f Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Mon, 20 Mar 2023 20:03:48 +0800 Subject: [PATCH] FIX: [STUDIO-1033] rm webview script handler on webview destory Change-Id: I2e9390dfaad46da9e158a43026ef872aaf88d589 --- src/slic3r/GUI/Widgets/WebView.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/Widgets/WebView.cpp b/src/slic3r/GUI/Widgets/WebView.cpp index ed1c30067a..e1006f0736 100644 --- a/src/slic3r/GUI/Widgets/WebView.cpp +++ b/src/slic3r/GUI/Widgets/WebView.cpp @@ -6,6 +6,8 @@ #include #if wxUSE_WEBVIEW_EDGE #include +#elif defined(__WXMAC__) +#include #endif #include #if defined(__WIN32__) || defined(__WXMAC__) @@ -75,6 +77,16 @@ private: wxString pendingUserAgent; }; +#elif defined __WXOSX__ + +class WebViewWebKit : public wxWebViewWebKit +{ + ~WebViewWebKit() override + { + RemoveScriptMessageHandler("wx"); + } +}; + #endif class FakeWebView : public wxWebView @@ -152,6 +164,8 @@ wxWebView* WebView::CreateWebView(wxWindow * parent, wxString const & url) #ifdef __WIN32__ wxWebView* webView = new WebViewEdge; +#elif defined(__WXOSX__) + wxWebView *webView = new WebViewWebKit; #else auto webView = wxWebView::New(); #endif @@ -184,9 +198,6 @@ wxWebView* WebView::CreateWebView(wxWindow * parent, wxString const & url) #endif BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": begin to add script message handler for wx."; Slic3r::GUI::wxGetApp().set_adding_script_handler(true); - webView->Bind(wxEVT_DESTROY, [webView] (auto & e) { - webView->RemoveScriptMessageHandler("wx"); - }); if (!webView->AddScriptMessageHandler("wx")) wxLogError("Could not add script message handler"); Slic3r::GUI::wxGetApp().set_adding_script_handler(false);