FIX: run script async with linux webkit
Change-Id: Ia86ff30680baf3045da99909614f3d32a7fe526b
This commit is contained in:
parent
5200e03257
commit
05bee8d8f4
1 changed files with 34 additions and 5 deletions
|
@ -10,6 +10,25 @@
|
||||||
|
|
||||||
#ifdef __WIN32__
|
#ifdef __WIN32__
|
||||||
#include "../WebView2.h"
|
#include "../WebView2.h"
|
||||||
|
#elif defined __linux__
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#define WEBKIT_API
|
||||||
|
struct WebKitWebView;
|
||||||
|
struct WebKitJavascriptResult;
|
||||||
|
extern "C" {
|
||||||
|
WEBKIT_API void
|
||||||
|
webkit_web_view_run_javascript (WebKitWebView *web_view,
|
||||||
|
const gchar *script,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GAsyncReadyCallback callback,
|
||||||
|
gpointer user_data);
|
||||||
|
WEBKIT_API WebKitJavascriptResult *
|
||||||
|
webkit_web_view_run_javascript_finish (WebKitWebView *web_view,
|
||||||
|
GAsyncResult *result,
|
||||||
|
GError **error);
|
||||||
|
WEBKIT_API void
|
||||||
|
webkit_javascript_result_unref (WebKitJavascriptResult *js_result);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class FakeWebView : public wxWebView
|
class FakeWebView : public wxWebView
|
||||||
|
@ -85,12 +104,12 @@ wxWebView* WebView::CreateWebView(wxWindow * parent, wxString const & url)
|
||||||
webView->Create(parent, wxID_ANY, url2, wxDefaultPosition, wxDefaultSize);
|
webView->Create(parent, wxID_ANY, url2, wxDefaultPosition, wxDefaultSize);
|
||||||
webView->SetUserAgent(wxString::Format("BBL-Slicer/v%s", SLIC3R_VERSION));
|
webView->SetUserAgent(wxString::Format("BBL-Slicer/v%s", SLIC3R_VERSION));
|
||||||
#endif
|
#endif
|
||||||
#ifdef __WXMAC__
|
#ifndef __WIN32__
|
||||||
Slic3r::GUI::wxGetApp().CallAfter([webView] {
|
Slic3r::GUI::wxGetApp().CallAfter([webView] {
|
||||||
#endif
|
#endif
|
||||||
if (!webView->AddScriptMessageHandler("wx"))
|
if (!webView->AddScriptMessageHandler("wx"))
|
||||||
wxLogError("Could not add script message handler");
|
wxLogError("Could not add script message handler");
|
||||||
#ifdef __WXMAC__
|
#ifndef __WIN32__
|
||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
webView->EnableContextMenu(false);
|
webView->EnableContextMenu(false);
|
||||||
|
@ -132,8 +151,18 @@ bool WebView::RunScript(wxWebView *webView, wxString const &javascript)
|
||||||
Slic3r::GUI::WKWebView_evaluateJavaScript(wkWebView, wrapJS.GetWrappedCode(), nullptr);
|
Slic3r::GUI::WKWebView_evaluateJavaScript(wkWebView, wrapJS.GetWrappedCode(), nullptr);
|
||||||
return true;
|
return true;
|
||||||
#else
|
#else
|
||||||
wxString result;
|
WebKitWebView *wkWebView = (WebKitWebView *) webView->GetNativeBackend();
|
||||||
return webView->RunScript(javascript, &result);
|
webkit_web_view_run_javascript(
|
||||||
|
wkWebView, javascript.utf8_str(), NULL,
|
||||||
|
[](GObject *wkWebView, GAsyncResult *res, void *) {
|
||||||
|
GError * error = NULL;
|
||||||
|
auto result = webkit_web_view_run_javascript_finish((WebKitWebView*)wkWebView, res, &error);
|
||||||
|
if (!result)
|
||||||
|
g_error_free (error);
|
||||||
|
else
|
||||||
|
webkit_javascript_result_unref (result);
|
||||||
|
}, NULL);
|
||||||
|
return true;
|
||||||
#endif
|
#endif
|
||||||
} catch (std::exception &e) {
|
} catch (std::exception &e) {
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in a new issue