From e06df85f026feb64c48dea63b5c39e06b7a98d2a Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Sun, 11 Feb 2024 08:34:56 +1100 Subject: [PATCH] WindowID now correctly processed by postMessage calls. --- v3/pkg/application/linux_cgo.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/v3/pkg/application/linux_cgo.go b/v3/pkg/application/linux_cgo.go index fca71dcf8..af58cd4f7 100644 --- a/v3/pkg/application/linux_cgo.go +++ b/v3/pkg/application/linux_cgo.go @@ -835,7 +835,11 @@ func windowNewWebview(parentId uint, gpuPolicy WebviewGpuPolicy) pointer { C.webkit_user_content_manager_register_script_message_handler(manager, c.String("external")) webView := C.webkit_web_view_new_with_user_content_manager(manager) winID := unsafe.Pointer(uintptr(C.uint(parentId))) + + // attach window id to both the webview and contentmanager C.g_object_set_data((*C.GObject)(unsafe.Pointer(webView)), c.String("windowid"), C.gpointer(winID)) + C.g_object_set_data((*C.GObject)(unsafe.Pointer(manager)), c.String("windowid"), C.gpointer(winID)) + context := C.webkit_web_view_get_context(C.webkit_web_view(webView)) C.webkit_web_context_register_uri_scheme( context, @@ -1255,13 +1259,16 @@ func onProcessRequest(request *C.WebKitURISchemeRequest, data C.uintptr_t) { func sendMessageToBackend(contentManager *C.WebKitUserContentManager, result *C.WebKitJavascriptResult, data unsafe.Pointer) { + // Get the windowID from the contentManager + windowID := uint(uintptr(C.g_object_get_data((*C.GObject)(unsafe.Pointer(contentManager)), C.CString("windowid")))) + var msg string value := C.webkit_javascript_result_get_js_value(result) message := C.jsc_value_to_string(value) msg = C.GoString(message) defer C.g_free(C.gpointer(message)) windowMessageBuffer <- &windowMessage{ - windowId: uint(windowID), + windowId: windowID, message: msg, } }