FIX: async evaluateJavaScript on vebwiew on MacOS
Change-Id: If4c34ef0e9b23622047842bada5a32efcee04498
This commit is contained in:
parent
9df3e7500a
commit
4b4e70efcb
|
@ -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);
|
||||
|
|
|
@ -10,6 +10,7 @@ namespace GUI {
|
|||
extern bool mac_dark_mode();
|
||||
extern double mac_max_scaling_factor();
|
||||
extern void set_miniaturizable(void * window);
|
||||
void WKWebView_evaluateJavaScript(void * web, wxString const & script, void (*callback)(wxString const &));
|
||||
|
||||
void initGestures(void * view, wxEvtHandler * handler);
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#import "MacDarkMode.hpp"
|
||||
#include "wx/osx/core/cfstring.h"
|
||||
|
||||
#import <algorithm>
|
||||
|
||||
|
@ -57,6 +58,16 @@ void set_miniaturizable(void * window)
|
|||
}
|
||||
}
|
||||
|
||||
void WKWebView_evaluateJavaScript(void * web, wxString const & script, void (*callback)(wxString const &))
|
||||
{
|
||||
[(WKWebView*)web evaluateJavaScript:wxCFStringRef(script).AsNSString() completionHandler: ^(id result, NSError *error) {
|
||||
if (callback && error != nil) {
|
||||
wxString err = wxCFStringRef(error.localizedFailureReason).AsString();
|
||||
callback(err);
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue