FIX: async evaluateJavaScript on vebwiew on MacOS

Change-Id: If4c34ef0e9b23622047842bada5a32efcee04498
This commit is contained in:
chunmao.guo 2022-08-02 17:59:28 +08:00 committed by Lane.Wei
parent 9df3e7500a
commit 4b4e70efcb
3 changed files with 20 additions and 1 deletions

View file

@ -1,14 +1,15 @@
#include "WebView.hpp"
#include "slic3r/GUI/GUI_App.hpp"
#include "slic3r/Utils/MacDarkMode.hpp"
#include <wx/webviewarchivehandler.h>
#include <wx/webviewfshandler.h>
#include <wx/msw/webview_edge.h>
#include <wx/uri.h>
#include "wx/private/jsscriptwrapper.h"
#ifdef __WIN32__
#include "../WebView2.h"
#include "wx/private/jsscriptwrapper.h"
#endif
class FakeWebView : public wxWebView
@ -124,6 +125,12 @@ bool WebView::RunScript(wxWebView *webView, wxString const &javascript)
int count = 0;
wxJSScriptWrapper wrapJS(javascript, &count);
return webView2->ExecuteScript(wrapJS.GetWrappedCode(), NULL) == 0;
#elif defined __WXMAC__
WKWebView * wkWebView = (WKWebView *) webView->GetNativeBackend();
int count = 0;
wxJSScriptWrapper wrapJS(javascript, &count);
Slic3r::GUI::WKWebView_evaluateJavaScript(wkWebView, wrapJS.GetWrappedCode(), nullptr);
return true;
#else
wxString result;
return webView->RunScript(javascript, &result);