5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-11 14:39:30 +08:00

WindowID now correctly processed by postMessage calls.

This commit is contained in:
Lea Anthony 2024-02-11 08:34:56 +11:00 committed by Travis McLane
parent 288a4757f8
commit e06df85f02

View File

@ -835,7 +835,11 @@ func windowNewWebview(parentId uint, gpuPolicy WebviewGpuPolicy) pointer {
C.webkit_user_content_manager_register_script_message_handler(manager, c.String("external")) C.webkit_user_content_manager_register_script_message_handler(manager, c.String("external"))
webView := C.webkit_web_view_new_with_user_content_manager(manager) webView := C.webkit_web_view_new_with_user_content_manager(manager)
winID := unsafe.Pointer(uintptr(C.uint(parentId))) 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(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)) context := C.webkit_web_view_get_context(C.webkit_web_view(webView))
C.webkit_web_context_register_uri_scheme( C.webkit_web_context_register_uri_scheme(
context, context,
@ -1255,13 +1259,16 @@ func onProcessRequest(request *C.WebKitURISchemeRequest, data C.uintptr_t) {
func sendMessageToBackend(contentManager *C.WebKitUserContentManager, result *C.WebKitJavascriptResult, func sendMessageToBackend(contentManager *C.WebKitUserContentManager, result *C.WebKitJavascriptResult,
data unsafe.Pointer) { 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 var msg string
value := C.webkit_javascript_result_get_js_value(result) value := C.webkit_javascript_result_get_js_value(result)
message := C.jsc_value_to_string(value) message := C.jsc_value_to_string(value)
msg = C.GoString(message) msg = C.GoString(message)
defer C.g_free(C.gpointer(message)) defer C.g_free(C.gpointer(message))
windowMessageBuffer <- &windowMessage{ windowMessageBuffer <- &windowMessage{
windowId: uint(windowID), windowId: windowID,
message: msg, message: msg,
} }
} }