From d62aa42e619bc361ea45b2c576e6336ea66ed51f Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 30 Mar 2026 11:53:48 +0800 Subject: [PATCH] Fix macOS WebView script-handler cleanup after wxWidgets 3.3 upgrade Commit ed88cbe removed `new WebViewWebKit` on macOS because wx 3.3 dropped the no-arg wxWebViewWebKit constructor, falling through to wxWebView::New(). That bypassed the WebViewWebKit destructor that calls RemoveScriptMessageHandler("wx"), reintroducing the WebKit teardown bug the subclass was added to fix. Restore the macOS-specific subclass path by adding a constructor that forwards to the wx 3.3 wxWebViewConfiguration-based ctor. --- src/slic3r/GUI/Widgets/WebView.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/slic3r/GUI/Widgets/WebView.cpp b/src/slic3r/GUI/Widgets/WebView.cpp index f5424f19e5..82933b6069 100644 --- a/src/slic3r/GUI/Widgets/WebView.cpp +++ b/src/slic3r/GUI/Widgets/WebView.cpp @@ -173,6 +173,12 @@ private: class WebViewWebKit : public wxWebViewWebKit { +public: + WebViewWebKit() + : wxWebViewWebKit(wxWebView::NewConfiguration(wxWebViewBackendWebKit)) + { + } + ~WebViewWebKit() override { RemoveScriptMessageHandler("wx"); @@ -257,6 +263,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