From df1cc2ee0be2660d67a595c8220e5cacb60b4019 Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Wed, 7 Dec 2022 23:52:16 +1100 Subject: [PATCH] Support EnableDevTools --- exp/examples/basic/main.go | 22 ++++++++++++---------- exp/pkg/application/window.go | 9 +++++++++ exp/pkg/application/window_darwin.go | 16 ++++++++++++++++ exp/pkg/options/application.go | 21 +++++++++++---------- 4 files changed, 48 insertions(+), 20 deletions(-) diff --git a/exp/examples/basic/main.go b/exp/examples/basic/main.go index ef301dc00..f85aceaf2 100644 --- a/exp/examples/basic/main.go +++ b/exp/examples/basic/main.go @@ -22,16 +22,17 @@ func main() { println("TERMINATION!!") }) myWindow := app.NewWindow(&options.Window{ - Title: "Basic", - Width: 600, - Height: 400, - AlwaysOnTop: false, - URL: "https://google.com", - DisableResize: false, - MinWidth: 100, - MinHeight: 100, - MaxWidth: 1000, - MaxHeight: 1000, + Title: "Basic", + Width: 600, + Height: 400, + AlwaysOnTop: false, + URL: "https://google.com", + DisableResize: false, + MinWidth: 100, + MinHeight: 100, + MaxWidth: 1000, + MaxHeight: 1000, + EnableDevTools: true, }) myWindow2 := app.NewWindow(&options.Window{ @@ -47,6 +48,7 @@ func main() { time.Sleep(5 * time.Second) myWindow.SetTitle("Wooooo") myWindow.SetAlwaysOnTop(true) + myWindow2.EnableDevTools() myWindow2.SetTitle("OMFG") myWindow2.NavigateToURL("https://wails.io") myWindow.SetMinSize(600, 600) diff --git a/exp/pkg/application/window.go b/exp/pkg/application/window.go index 5c70c4439..f275ad03e 100644 --- a/exp/pkg/application/window.go +++ b/exp/pkg/application/window.go @@ -11,6 +11,7 @@ type windowImpl interface { setResizable(resizable bool) setMinSize(width, height int) setMaxSize(width, height int) + enableDevTools() } type Window struct { @@ -100,3 +101,11 @@ func (w *Window) SetMaxSize(maxWidth, maxHeight int) { w.impl.setSize(w.options.Width, w.options.Height) w.impl.setMaxSize(maxWidth, maxHeight) } + +func (w *Window) EnableDevTools() { + if w.impl == nil { + w.options.EnableDevTools = true + return + } + w.impl.enableDevTools() +} diff --git a/exp/pkg/application/window_darwin.go b/exp/pkg/application/window_darwin.go index c3a0f823c..145dc142d 100644 --- a/exp/pkg/application/window_darwin.go +++ b/exp/pkg/application/window_darwin.go @@ -126,6 +126,16 @@ void windowResetMaxSize(void* nsWindow) { }); } +// Enable NSWindow devtools +void windowEnableDevTools(void* nsWindow) { + // Enable devtools on main thread + dispatch_async(dispatch_get_main_queue(), ^{ + // Get window delegate + WindowDelegate* delegate = (WindowDelegate*)[(NSWindow*)nsWindow delegate]; + // Enable devtools in webview + [delegate.webView.configuration.preferences setValue:@YES forKey:@"developerExtrasEnabled"]; + }); +} */ import "C" import ( @@ -173,6 +183,9 @@ func (w *macosWindow) setMaxSize(width, height int) { func (w *macosWindow) setResizable(resizable bool) { C.windowSetResizable(w.nsWindow, C.bool(resizable)) } +func (w *macosWindow) enableDevTools() { + C.windowEnableDevTools(w.nsWindow) +} func (w *macosWindow) run() error { w.nsWindow = C.windowNew(C.int(w.options.Width), C.int(w.options.Height)) @@ -184,6 +197,9 @@ func (w *macosWindow) run() error { if w.options.URL != "" { w.navigateToURL(w.options.URL) } + if w.options.EnableDevTools { + w.enableDevTools() + } C.windowShow(w.nsWindow) return nil } diff --git a/exp/pkg/options/application.go b/exp/pkg/options/application.go index a223ec367..624087bb7 100644 --- a/exp/pkg/options/application.go +++ b/exp/pkg/options/application.go @@ -21,14 +21,15 @@ type Mac struct { } type Window struct { - Title string - Width, Height int - AlwaysOnTop bool - URL string - DisableResize bool - Resizable bool - MinWidth int - MinHeight int - MaxWidth int - MaxHeight int + Title string + Width, Height int + AlwaysOnTop bool + URL string + DisableResize bool + Resizable bool + MinWidth int + MinHeight int + MaxWidth int + MaxHeight int + EnableDevTools bool }