diff --git a/mkdocs-website/docs/roadmap.md b/mkdocs-website/docs/roadmap.md index e8f2c0431..2acec6259 100644 --- a/mkdocs-website/docs/roadmap.md +++ b/mkdocs-website/docs/roadmap.md @@ -17,22 +17,22 @@ The main goal is to get most of the examples working on all platforms. - P - Partially working - N - Not working -| Example | Mac | Windows | Linux | -|--------------|-----|---------|-------| -| binding | | W | | -| build | | W | | -| clipboard | | W | | -| contextmenus | | N | | -| dialog | | W | | -| events | | N | | -| frameless | | W | | -| keybindings | | W | | -| menu | | W | | -| plain | | W | | -| screen | | W | | -| systray | | W | | -| window | | W | | -| wml | | W | | +| Example | Mac | Windows | Linux | +|---------------|-----|---------|-------| +| binding | | W | | +| build | | W | | +| clipboard | | W | | +| context menus | | W | | +| dialog | | W | | +| events | | W | | +| frameless | | W | | +| keybindings | | W | | +| menu | | W | | +| plain | | W | | +| screen | | W | | +| systray | | W | | +| window | | W | | +| wml | | W | | ### Alpha 2 diff --git a/v3/examples/binding/go.mod b/v3/examples/binding/go.mod index ee1a5687b..a9b92e409 100644 --- a/v3/examples/binding/go.mod +++ b/v3/examples/binding/go.mod @@ -35,7 +35,7 @@ require ( github.com/samber/lo v1.38.1 // indirect github.com/sergi/go-diff v1.2.0 // indirect github.com/stretchr/testify v1.8.4 // indirect - github.com/wailsapp/go-webview2 v1.0.7 // indirect + github.com/wailsapp/go-webview2 v1.0.8-0.20231010092311-42cbb98eb53b // indirect github.com/wailsapp/mimetype v1.4.1 // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect golang.org/x/crypto v0.9.0 // indirect diff --git a/v3/examples/binding/go.sum b/v3/examples/binding/go.sum index 443179609..24f2e7d01 100644 --- a/v3/examples/binding/go.sum +++ b/v3/examples/binding/go.sum @@ -105,6 +105,7 @@ github.com/tmclane/purego v0.0.0-20230601213035-1f25e70d7b01 h1:oQwu3iNDywGp1Hry github.com/tmclane/purego v0.0.0-20230601213035-1f25e70d7b01/go.mod h1:ah1In8AOtksoNK6yk5z1HTJeUkC1Ez4Wk2idgGslMwQ= github.com/wailsapp/go-webview2 v1.0.7 h1:s95+7irJsAsTy1RsjJ6N0cYX7tZ4gP7Uzawds0L2urs= github.com/wailsapp/go-webview2 v1.0.7/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo= +github.com/wailsapp/go-webview2 v1.0.8-0.20231010092311-42cbb98eb53b/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo= github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs= github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= diff --git a/v3/examples/contextmenus/README.md b/v3/examples/contextmenus/README.md index 0e6a6bf3e..2899223af 100644 --- a/v3/examples/contextmenus/README.md +++ b/v3/examples/contextmenus/README.md @@ -1,14 +1,32 @@ # contextmenus This example shows how to create a context menu for your application. +It demonstrates window level and global context menus. + +A simple menu is registered with the window and the application with the id "test". +In our frontend html, we then use the `--custom-contextmenu` style to attach the menu to an element. +We also use the `--custom-contextmenu-data` style to pass data to the menu callback which can be read in Go. +This is really useful when using components to distinguish between different elements. + +```go + +```html + +
+

1

+
+
+

2

+
+``` # Status -| Platform | Status | -|----------|-------------| -| Mac | | -| Windows | Not Working | -| Linux | | +| Platform | Status | +|----------|---------| +| Mac | | +| Windows | Working | +| Linux | | # TODO diff --git a/v3/examples/contextmenus/main.go b/v3/examples/contextmenus/main.go index 75cd285c2..4cb7977d0 100644 --- a/v3/examples/contextmenus/main.go +++ b/v3/examples/contextmenus/main.go @@ -3,7 +3,6 @@ package main import ( "embed" _ "embed" - "fmt" "log" "github.com/wailsapp/wails/v3/pkg/application" @@ -38,12 +37,12 @@ func main() { contextMenu := app.NewMenu() contextMenu.Add("Click Me").OnClick(func(data *application.Context) { - fmt.Printf("Context menu data: %+v\n", data.ContextMenuData()) + app.Logger.Info("Context menu", "context data", data.ContextMenuData()) }) globalContextMenu := app.NewMenu() globalContextMenu.Add("Default context menu item").OnClick(func(data *application.Context) { - fmt.Printf("Context menu data: %+v\n", data.ContextMenuData()) + app.Logger.Info("Context menu", "context data", data.ContextMenuData()) }) // Registering the menu with a window will make it available to that window only diff --git a/v3/examples/dev/go.mod b/v3/examples/dev/go.mod index ed7801144..818528dc7 100644 --- a/v3/examples/dev/go.mod +++ b/v3/examples/dev/go.mod @@ -33,7 +33,7 @@ require ( github.com/samber/lo v1.38.1 // indirect github.com/sergi/go-diff v1.2.0 // indirect github.com/stretchr/testify v1.8.4 // indirect - github.com/wailsapp/go-webview2 v1.0.7 // indirect + github.com/wailsapp/go-webview2 v1.0.8-0.20231010092311-42cbb98eb53b // indirect github.com/wailsapp/mimetype v1.4.1 // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect golang.org/x/crypto v0.9.0 // indirect diff --git a/v3/examples/dev/go.sum b/v3/examples/dev/go.sum index e27dd7fd8..609f296ef 100644 --- a/v3/examples/dev/go.sum +++ b/v3/examples/dev/go.sum @@ -105,6 +105,7 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/wailsapp/go-webview2 v1.0.7 h1:s95+7irJsAsTy1RsjJ6N0cYX7tZ4gP7Uzawds0L2urs= github.com/wailsapp/go-webview2 v1.0.7/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo= +github.com/wailsapp/go-webview2 v1.0.8-0.20231010092311-42cbb98eb53b/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo= github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs= github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= diff --git a/v3/examples/events/README.md b/v3/examples/events/README.md index bf1f68699..596540f5a 100644 --- a/v3/examples/events/README.md +++ b/v3/examples/events/README.md @@ -1,3 +1,25 @@ # Events Example -This example is not ready for testing yet. \ No newline at end of file +This example is a demonstration of using the new events API. +It has 2 windows that can emit events from the frontend and the backend emits an event every 10 seconds. +All events emitted are logged either to the console or the window. + +It also demonstrates the use of `RegisterHook` to register a function to be called when an event is emitted. +For one window, it captures the `WindowClosing` event and prevents the window from closing twice. +The other window uses both hooks and events to show the window is gaining focus. + +## Running the example + +To run the example, simply run the following command: + +```bash +go run main.go +``` + +# Status + +| Platform | Status | +|----------|---------| +| Mac | | +| Windows | Working | +| Linux | | \ No newline at end of file diff --git a/v3/examples/events/main.go b/v3/examples/events/main.go index abad92096..8ec5a2bc8 100644 --- a/v3/examples/events/main.go +++ b/v3/examples/events/main.go @@ -28,13 +28,12 @@ func main() { // Custom event handling app.Events.On("myevent", func(e *application.WailsEvent) { - app.Logger.Info("[Go] WailsEvent received: %+v\n", e) + app.Logger.Info("[Go] WailsEvent received", "name", e.Name, "data", e.Data, "sender", e.Sender, "cancelled", e.Cancelled) }) // OS specific application events app.On(events.Common.ApplicationStarted, func(event *application.Event) { for { - app.Logger.Info("Sending event from Go!") app.Events.Emit(&application.WailsEvent{ Name: "myevent", Data: "hello", diff --git a/v3/examples/frameless/go.mod b/v3/examples/frameless/go.mod index 600dec393..253114010 100644 --- a/v3/examples/frameless/go.mod +++ b/v3/examples/frameless/go.mod @@ -32,7 +32,7 @@ require ( github.com/rivo/uniseg v0.4.4 // indirect github.com/samber/lo v1.38.1 // indirect github.com/sergi/go-diff v1.2.0 // indirect - github.com/wailsapp/go-webview2 v1.0.7 // indirect + github.com/wailsapp/go-webview2 v1.0.8-0.20231010092311-42cbb98eb53b // indirect github.com/wailsapp/mimetype v1.4.1 // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect golang.org/x/crypto v0.9.0 // indirect diff --git a/v3/examples/frameless/go.sum b/v3/examples/frameless/go.sum index 994816c13..a7d8381be 100644 --- a/v3/examples/frameless/go.sum +++ b/v3/examples/frameless/go.sum @@ -99,6 +99,7 @@ github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJy github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/wailsapp/go-webview2 v1.0.7 h1:s95+7irJsAsTy1RsjJ6N0cYX7tZ4gP7Uzawds0L2urs= github.com/wailsapp/go-webview2 v1.0.7/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo= +github.com/wailsapp/go-webview2 v1.0.8-0.20231010092311-42cbb98eb53b/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo= github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs= github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= diff --git a/v3/examples/plugins/go.mod b/v3/examples/plugins/go.mod index e65658610..e0593725b 100644 --- a/v3/examples/plugins/go.mod +++ b/v3/examples/plugins/go.mod @@ -40,7 +40,7 @@ require ( github.com/samber/lo v1.38.1 // indirect github.com/sergi/go-diff v1.2.0 // indirect github.com/stretchr/testify v1.8.4 // indirect - github.com/wailsapp/go-webview2 v1.0.7 // indirect + github.com/wailsapp/go-webview2 v1.0.8-0.20231010092311-42cbb98eb53b // indirect github.com/wailsapp/mimetype v1.4.1 // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect golang.org/x/crypto v0.9.0 // indirect diff --git a/v3/examples/plugins/go.sum b/v3/examples/plugins/go.sum index 8632e0a93..73b1f62a5 100644 --- a/v3/examples/plugins/go.sum +++ b/v3/examples/plugins/go.sum @@ -118,6 +118,7 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/wailsapp/go-webview2 v1.0.7 h1:s95+7irJsAsTy1RsjJ6N0cYX7tZ4gP7Uzawds0L2urs= github.com/wailsapp/go-webview2 v1.0.7/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo= +github.com/wailsapp/go-webview2 v1.0.8-0.20231010092311-42cbb98eb53b/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo= github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs= github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= diff --git a/v3/examples/server/go.mod b/v3/examples/server/go.mod index 0cd589069..bb3b391e0 100644 --- a/v3/examples/server/go.mod +++ b/v3/examples/server/go.mod @@ -35,7 +35,7 @@ require ( github.com/samber/lo v1.38.1 // indirect github.com/sergi/go-diff v1.2.0 // indirect github.com/stretchr/testify v1.8.4 // indirect - github.com/wailsapp/go-webview2 v1.0.7 // indirect + github.com/wailsapp/go-webview2 v1.0.8-0.20231010092311-42cbb98eb53b // indirect github.com/wailsapp/mimetype v1.4.1 // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect golang.org/x/crypto v0.9.0 // indirect diff --git a/v3/examples/server/go.sum b/v3/examples/server/go.sum index e27dd7fd8..609f296ef 100644 --- a/v3/examples/server/go.sum +++ b/v3/examples/server/go.sum @@ -105,6 +105,7 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/wailsapp/go-webview2 v1.0.7 h1:s95+7irJsAsTy1RsjJ6N0cYX7tZ4gP7Uzawds0L2urs= github.com/wailsapp/go-webview2 v1.0.7/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo= +github.com/wailsapp/go-webview2 v1.0.8-0.20231010092311-42cbb98eb53b/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo= github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs= github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= diff --git a/v3/go.mod b/v3/go.mod index 519b1562f..8a3798531 100644 --- a/v3/go.mod +++ b/v3/go.mod @@ -29,7 +29,7 @@ require ( github.com/pterm/pterm v0.12.51 github.com/samber/lo v1.38.1 github.com/tc-hib/winres v0.1.6 - github.com/wailsapp/go-webview2 v1.0.7 + github.com/wailsapp/go-webview2 v1.0.8 github.com/wailsapp/mimetype v1.4.1 golang.org/x/net v0.10.0 golang.org/x/sys v0.13.0 diff --git a/v3/go.sum b/v3/go.sum index eb924251a..12aa3427b 100644 --- a/v3/go.sum +++ b/v3/go.sum @@ -111,8 +111,6 @@ github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/go-task/task/v3 v3.30.1 h1:HdfCTAJDHoWL3+3RyY+o+0IK1O5xQaSBrZIq2SKOQ84= -github.com/go-task/task/v3 v3.30.1/go.mod h1:QPFn/f18HEmOhbuBYhlQOXX6ZogqzjQz31GA45uZ0mI= github.com/go-task/task/v3 v3.31.0 h1:o6iyj9gPJXxvxPi/u/l8e025PmM2BqKgtLNPS2i7hV4= github.com/go-task/task/v3 v3.31.0/go.mod h1:/CPDAu9nS3+soqY/e1tTrSo/zxk76lnljEV9aBTeKrg= github.com/goccy/go-json v0.9.6/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= @@ -338,8 +336,8 @@ github.com/tc-hib/winres v0.1.6 h1:qgsYHze+BxQPEYilxIz/KCQGaClvI2+yLBAZs+3+0B8= github.com/tc-hib/winres v0.1.6/go.mod h1:pe6dOR40VOrGz8PkzreVKNvEKnlE8t4yR8A8naL+t7A= github.com/tmclane/purego v0.0.0-20230818202843-0b72c8c9140f h1:/HXk9aFXP97CJRzOIphm4pzySmJLqIMhKu1kD5usz1E= github.com/tmclane/purego v0.0.0-20230818202843-0b72c8c9140f/go.mod h1:ah1In8AOtksoNK6yk5z1HTJeUkC1Ez4Wk2idgGslMwQ= -github.com/wailsapp/go-webview2 v1.0.7 h1:s95+7irJsAsTy1RsjJ6N0cYX7tZ4gP7Uzawds0L2urs= -github.com/wailsapp/go-webview2 v1.0.7/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo= +github.com/wailsapp/go-webview2 v1.0.8 h1:hyoFPlMSfb/NM64wuVbgBaq1MASJjqsSUYhN+Rbcr9Y= +github.com/wailsapp/go-webview2 v1.0.8/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo= github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs= github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= @@ -461,8 +459,6 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -509,16 +505,12 @@ golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= -golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/v3/internal/runtime/desktop/api/event_types.js b/v3/internal/runtime/desktop/api/event_types.js index e2a7857e3..5fc44e71f 100644 --- a/v3/internal/runtime/desktop/api/event_types.js +++ b/v3/internal/runtime/desktop/api/event_types.js @@ -7,6 +7,7 @@ export const EventTypes = { APMResumeAutomatic: "windows:APMResumeAutomatic", APMResumeSuspend: "windows:APMResumeSuspend", APMPowerSettingChange: "windows:APMPowerSettingChange", + ApplicationStarted: "windows:ApplicationStarted", WebViewNavigationCompleted: "windows:WebViewNavigationCompleted", WindowInactive: "windows:WindowInactive", WindowActive: "windows:WindowActive", diff --git a/v3/pkg/application/application_windows.go b/v3/pkg/application/application_windows.go index b1f4d2b81..4bdc166a6 100644 --- a/v3/pkg/application/application_windows.go +++ b/v3/pkg/application/application_windows.go @@ -180,7 +180,11 @@ func (m *windowsApp) run() error { for eventID := range m.parent.applicationEventListeners { m.on(eventID) } - + // Emit application started event + applicationEvents <- &Event{ + Id: uint(events.Windows.ApplicationStarted), + ctx: blankApplicationEventContext, + } _ = m.runMainLoop() return nil diff --git a/v3/pkg/application/events_common_windows.go b/v3/pkg/application/events_common_windows.go index de0dbd164..98db18b3d 100644 --- a/v3/pkg/application/events_common_windows.go +++ b/v3/pkg/application/events_common_windows.go @@ -6,6 +6,7 @@ import "github.com/wailsapp/wails/v3/pkg/events" var commonApplicationEventMap = map[events.ApplicationEventType]events.ApplicationEventType{ events.Windows.SystemThemeChanged: events.Common.ThemeChanged, + events.Windows.ApplicationStarted: events.Common.ApplicationStarted, } func (m *windowsApp) setupCommonEvents() { diff --git a/v3/pkg/application/messageprocessor_events.go b/v3/pkg/application/messageprocessor_events.go index d4758addb..7831f94d1 100644 --- a/v3/pkg/application/messageprocessor_events.go +++ b/v3/pkg/application/messageprocessor_events.go @@ -35,6 +35,6 @@ func (m *MessageProcessor) processEventsMethod(method int, rw http.ResponseWrite return } - m.Info("Runtime:", "method", "Events."+eventsMethodNames[method], "event", event) + m.Info("Runtime:", "method", "Events."+eventsMethodNames[method], "name", event.Name, "sender", event.Sender, "data", event.Data, "cancelled", event.Cancelled) } diff --git a/v3/pkg/application/webview_window.go b/v3/pkg/application/webview_window.go index 3bd0b0fbd..8398e3cf8 100644 --- a/v3/pkg/application/webview_window.go +++ b/v3/pkg/application/webview_window.go @@ -1025,7 +1025,9 @@ func (w *WebviewWindow) OpenContextMenu(data *ContextMenuData) { if w.impl == nil { return } - w.impl.openContextMenu(menu, data) + InvokeSync(func() { + w.impl.openContextMenu(menu, data) + }) } // RegisterContextMenu registers a context menu and assigns it the given name. diff --git a/v3/pkg/application/webview_window_windows.go b/v3/pkg/application/webview_window_windows.go index 20b81d5e4..db3c10711 100644 --- a/v3/pkg/application/webview_window_windows.go +++ b/v3/pkg/application/webview_window_windows.go @@ -815,6 +815,7 @@ func newWindowImpl(parent *WebviewWindow) *windowsWebviewWindow { func (w *windowsWebviewWindow) openContextMenu(menu *Menu, _ *ContextMenuData) { // Create the menu thisMenu := NewPopupMenu(w.hwnd, menu) + thisMenu.Update() w.currentlyOpenContextMenu = thisMenu thisMenu.ShowAtCursor() } @@ -1260,8 +1261,8 @@ func (w *windowsWebviewWindow) processRequest(req *edge.ICoreWebView2WebResource webviewRequests <- &webViewAssetRequest{ Request: webviewRequest, - windowId: uint(windowID), - windowName: globalApplication.getWindowForID(uint(windowID)).Name(), + windowId: w.parent.id, + windowName: globalApplication.getWindowForID(w.parent.id).Name(), } } diff --git a/v3/pkg/events/events.go b/v3/pkg/events/events.go index fd0134f78..5bfb66b91 100644 --- a/v3/pkg/events/events.go +++ b/v3/pkg/events/events.go @@ -33,25 +33,25 @@ type commonEvents struct { func newCommonEvents() commonEvents { return commonEvents{ - ApplicationStarted: 1167, - WindowMaximise: 1168, - WindowUnMaximise: 1169, - WindowFullscreen: 1170, - WindowUnFullscreen: 1171, - WindowRestore: 1172, - WindowMinimise: 1173, - WindowUnMinimise: 1174, - WindowClosing: 1175, - WindowZoom: 1176, - WindowZoomIn: 1177, - WindowZoomOut: 1178, - WindowZoomReset: 1179, - WindowFocus: 1180, - WindowLostFocus: 1181, - WindowShow: 1182, - WindowHide: 1183, - WindowDPIChanged: 1184, - ThemeChanged: 1185, + ApplicationStarted: 1168, + WindowMaximise: 1169, + WindowUnMaximise: 1170, + WindowFullscreen: 1171, + WindowUnFullscreen: 1172, + WindowRestore: 1173, + WindowMinimise: 1174, + WindowUnMinimise: 1175, + WindowClosing: 1176, + WindowZoom: 1177, + WindowZoomIn: 1178, + WindowZoomOut: 1179, + WindowZoomReset: 1180, + WindowFocus: 1181, + WindowLostFocus: 1182, + WindowShow: 1183, + WindowHide: 1184, + WindowDPIChanged: 1185, + ThemeChanged: 1186, } } @@ -320,6 +320,7 @@ type windowsEvents struct { APMResumeAutomatic ApplicationEventType APMResumeSuspend ApplicationEventType APMPowerSettingChange ApplicationEventType + ApplicationStarted ApplicationEventType WebViewNavigationCompleted WindowEventType WindowInactive WindowEventType WindowActive WindowEventType @@ -344,20 +345,21 @@ func newWindowsEvents() windowsEvents { APMResumeAutomatic: 1150, APMResumeSuspend: 1151, APMPowerSettingChange: 1152, - WebViewNavigationCompleted: 1153, - WindowInactive: 1154, - WindowActive: 1155, - WindowClickActive: 1156, - WindowMaximise: 1157, - WindowUnMaximise: 1158, - WindowFullscreen: 1159, - WindowUnFullscreen: 1160, - WindowRestore: 1161, - WindowMinimise: 1162, - WindowUnMinimise: 1163, - WindowClose: 1164, - WindowSetFocus: 1165, - WindowKillFocus: 1166, + ApplicationStarted: 1153, + WebViewNavigationCompleted: 1154, + WindowInactive: 1155, + WindowActive: 1156, + WindowClickActive: 1157, + WindowMaximise: 1158, + WindowUnMaximise: 1159, + WindowFullscreen: 1160, + WindowUnFullscreen: 1161, + WindowRestore: 1162, + WindowMinimise: 1163, + WindowUnMinimise: 1164, + WindowClose: 1165, + WindowSetFocus: 1166, + WindowKillFocus: 1167, } } @@ -495,37 +497,38 @@ var eventToJS = map[uint]string{ 1150: "windows:APMResumeAutomatic", 1151: "windows:APMResumeSuspend", 1152: "windows:APMPowerSettingChange", - 1153: "windows:WebViewNavigationCompleted", - 1154: "windows:WindowInactive", - 1155: "windows:WindowActive", - 1156: "windows:WindowClickActive", - 1157: "windows:WindowMaximise", - 1158: "windows:WindowUnMaximise", - 1159: "windows:WindowFullscreen", - 1160: "windows:WindowUnFullscreen", - 1161: "windows:WindowRestore", - 1162: "windows:WindowMinimise", - 1163: "windows:WindowUnMinimise", - 1164: "windows:WindowClose", - 1165: "windows:WindowSetFocus", - 1166: "windows:WindowKillFocus", - 1167: "common:ApplicationStarted", - 1168: "common:WindowMaximise", - 1169: "common:WindowUnMaximise", - 1170: "common:WindowFullscreen", - 1171: "common:WindowUnFullscreen", - 1172: "common:WindowRestore", - 1173: "common:WindowMinimise", - 1174: "common:WindowUnMinimise", - 1175: "common:WindowClosing", - 1176: "common:WindowZoom", - 1177: "common:WindowZoomIn", - 1178: "common:WindowZoomOut", - 1179: "common:WindowZoomReset", - 1180: "common:WindowFocus", - 1181: "common:WindowLostFocus", - 1182: "common:WindowShow", - 1183: "common:WindowHide", - 1184: "common:WindowDPIChanged", - 1185: "common:ThemeChanged", + 1153: "windows:ApplicationStarted", + 1154: "windows:WebViewNavigationCompleted", + 1155: "windows:WindowInactive", + 1156: "windows:WindowActive", + 1157: "windows:WindowClickActive", + 1158: "windows:WindowMaximise", + 1159: "windows:WindowUnMaximise", + 1160: "windows:WindowFullscreen", + 1161: "windows:WindowUnFullscreen", + 1162: "windows:WindowRestore", + 1163: "windows:WindowMinimise", + 1164: "windows:WindowUnMinimise", + 1165: "windows:WindowClose", + 1166: "windows:WindowSetFocus", + 1167: "windows:WindowKillFocus", + 1168: "common:ApplicationStarted", + 1169: "common:WindowMaximise", + 1170: "common:WindowUnMaximise", + 1171: "common:WindowFullscreen", + 1172: "common:WindowUnFullscreen", + 1173: "common:WindowRestore", + 1174: "common:WindowMinimise", + 1175: "common:WindowUnMinimise", + 1176: "common:WindowClosing", + 1177: "common:WindowZoom", + 1178: "common:WindowZoomIn", + 1179: "common:WindowZoomOut", + 1180: "common:WindowZoomReset", + 1181: "common:WindowFocus", + 1182: "common:WindowLostFocus", + 1183: "common:WindowShow", + 1184: "common:WindowHide", + 1185: "common:WindowDPIChanged", + 1186: "common:ThemeChanged", } diff --git a/v3/pkg/events/events.txt b/v3/pkg/events/events.txt index 288714acf..5df968e00 100644 --- a/v3/pkg/events/events.txt +++ b/v3/pkg/events/events.txt @@ -127,6 +127,7 @@ windows:APMSuspend windows:APMResumeAutomatic windows:APMResumeSuspend windows:APMPowerSettingChange +windows:ApplicationStarted windows:WebViewNavigationCompleted windows:WindowInactive windows:WindowActive