Fix window close issues

Update docs
Make uri scheme registration thread safe
This commit is contained in:
Lea Anthony
2024-03-06 16:59:13 -06:00
committed by Travis McLane
parent a60b198b03
commit be7c723c47
5 changed files with 55 additions and 28 deletions
+10
View File
@@ -23,6 +23,16 @@ Report any issues you find using [this guide](./getting-started/feedback.md).
- Test all the things on Linux!
#### Status
Linux examples:
- :material-check-bold: - Working
- :material-minus: - Partially working
- :material-close: - Not working
{{ read_csv("alpha5.csv") }}
## Upcoming milestones
## Alpha 6
+16 -16
View File
@@ -1,16 +1,16 @@
" ",Mac,Windows,Linux
binding,:material-check-bold:,:material-check-bold:,:material-check-bold:
build,:material-check-bold:,:material-check-bold:,:material-check-bold:
clipboard,:material-check-bold:,:material-check-bold:,:material-check-bold:
context menus,:material-check-bold:,:material-check-bold:,:material-check-bold:
dialogs,:material-check-bold:,:material-check-bold:,:material-check-bold:
drag-n-drop,:material-check-bold:,:material-check-bold:,:material-check-bold:
events,:material-check-bold:,:material-check-bold:,:material-minus:
frameless,:material-check-bold:,:material-check-bold:,:material-check-bold:
keybindings,:material-check-bold:,:material-check-bold:,:material-minus:
plain,:material-check-bold:,:material-check-bold:,:material-check-bold:
screen,:material-check-bold:,:material-check-bold:,:material-check-bold:
systray,:material-check-bold:,:material-check-bold:,:material-check-bold:
video,:material-check-bold:,:material-check-bold:,:material-check-bold:
window,:material-check-bold:,:material-check-bold:,:material-minus:
wml,:material-check-bold:,:material-check-bold:,:material-check-bold:
" ",Linux,Notes
binding," "," "
build," "," "
clipboard," "," "
context menus," "," "
dialogs," "," "
drag-n-drop," "," "
events,:material-check-bold:," "
frameless," "," "
keybindings," "," "
plain," "," "
screen," "," "
systray," "," "
video," "," "
window," "," "
wml," "," "
1 Mac Linux Windows Notes
2 binding :material-check-bold: :material-check-bold: :material-check-bold:
3 build :material-check-bold: :material-check-bold: :material-check-bold:
4 clipboard :material-check-bold: :material-check-bold: :material-check-bold:
5 context menus :material-check-bold: :material-check-bold: :material-check-bold:
6 dialogs :material-check-bold: :material-check-bold: :material-check-bold:
7 drag-n-drop :material-check-bold: :material-check-bold: :material-check-bold:
8 events :material-check-bold: :material-minus: :material-check-bold: :material-check-bold:
9 frameless :material-check-bold: :material-check-bold: :material-check-bold:
10 keybindings :material-check-bold: :material-minus: :material-check-bold:
11 plain :material-check-bold: :material-check-bold: :material-check-bold:
12 screen :material-check-bold: :material-check-bold: :material-check-bold:
13 systray :material-check-bold: :material-check-bold: :material-check-bold:
14 video :material-check-bold: :material-check-bold: :material-check-bold:
15 window :material-check-bold: :material-minus: :material-check-bold:
16 wml :material-check-bold: :material-check-bold: :material-check-bold:
@@ -1,9 +1,5 @@
Scenario,Windows,Mac,Linux
Same package,: clipboardLock.RLock()
defer clipboardLock.RUnlock()
clipboardText := C.getClipboardText()
result := C.GoString(clipboardText)
return result, true:,:material-check-bold:,:material-check-bold:
Same package,:material-check-bold,:material-check-bold:,:material-check-bold:
Different package,:material-check-bold:,:material-check-bold:,:material-check-bold:
Different package with same name,"on hold","on hold","on hold"
Containing another struct from same package,:material-check-bold:,:material-check-bold:,:material-check-bold:
1 Scenario Windows Mac Linux
2 Same package : clipboardLock.RLock() :material-check-bold :material-check-bold: :material-check-bold:
defer clipboardLock.RUnlock()
clipboardText := C.getClipboardText()
result := C.GoString(clipboardText)
return result true: :material-check-bold: :material-check-bold:
3 Different package :material-check-bold: :material-check-bold: :material-check-bold:
4 Different package with same name on hold on hold on hold
5 Containing another struct from same package :material-check-bold: :material-check-bold: :material-check-bold:
+16
View File
@@ -0,0 +1,16 @@
" ",Mac,Windows,Linux
binding,:material-check-bold:,:material-check-bold:,:material-check-bold:
build,:material-check-bold:,:material-check-bold:,:material-check-bold:
clipboard,:material-check-bold:,:material-check-bold:,:material-check-bold:
context menus,:material-check-bold:,:material-check-bold:,:material-check-bold:
dialogs,:material-check-bold:,:material-check-bold:,:material-check-bold:
drag-n-drop,:material-check-bold:,:material-check-bold:,:material-check-bold:
events,:material-check-bold:,:material-check-bold:,:material-minus:
frameless,:material-check-bold:,:material-check-bold:,:material-check-bold:
keybindings,:material-check-bold:,:material-check-bold:,:material-minus:
plain,:material-check-bold:,:material-check-bold:,:material-check-bold:
screen,:material-check-bold:,:material-check-bold:,:material-check-bold:
systray,:material-check-bold:,:material-check-bold:,:material-check-bold:
video,:material-check-bold:,:material-check-bold:,:material-check-bold:
window,:material-check-bold:,:material-check-bold:,:material-minus:
wml,:material-check-bold:,:material-check-bold:,:material-check-bold:
1 Mac Windows Linux
2 binding :material-check-bold: :material-check-bold: :material-check-bold:
3 build :material-check-bold: :material-check-bold: :material-check-bold:
4 clipboard :material-check-bold: :material-check-bold: :material-check-bold:
5 context menus :material-check-bold: :material-check-bold: :material-check-bold:
6 dialogs :material-check-bold: :material-check-bold: :material-check-bold:
7 drag-n-drop :material-check-bold: :material-check-bold: :material-check-bold:
8 events :material-check-bold: :material-check-bold: :material-minus:
9 frameless :material-check-bold: :material-check-bold: :material-check-bold:
10 keybindings :material-check-bold: :material-check-bold: :material-minus:
11 plain :material-check-bold: :material-check-bold: :material-check-bold:
12 screen :material-check-bold: :material-check-bold: :material-check-bold:
13 systray :material-check-bold: :material-check-bold: :material-check-bold:
14 video :material-check-bold: :material-check-bold: :material-check-bold:
15 window :material-check-bold: :material-check-bold: :material-minus:
16 wml :material-check-bold: :material-check-bold: :material-check-bold:
+12 -7
View File
@@ -7,6 +7,7 @@ import (
"github.com/wailsapp/wails/v3/internal/assetserver/webview"
"regexp"
"strings"
"sync"
"unsafe"
"github.com/wailsapp/wails/v3/pkg/events"
@@ -192,6 +193,8 @@ var (
mainThreadId *C.GThread
)
var registerURIScheme sync.Once
func init() {
gtkSignalToMenuItem = map[uint]*MenuItem{}
@@ -840,13 +843,15 @@ func windowNewWebview(parentId uint, gpuPolicy WebviewGpuPolicy) pointer {
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,
c.String("wails"),
C.WebKitURISchemeRequestCallback(C.onProcessRequest),
nil,
nil)
registerURIScheme.Do(func() {
context := C.webkit_web_view_get_context(C.webkit_web_view(webView))
C.webkit_web_context_register_uri_scheme(
context,
c.String("wails"),
C.WebKitURISchemeRequestCallback(C.onProcessRequest),
nil,
nil)
})
settings := C.webkit_web_view_get_settings((*C.WebKitWebView)(unsafe.Pointer(webView)))
C.webkit_settings_set_user_agent_with_application_details(settings, c.String("wails.io"), c.String(""))