diff --git a/exp/examples/basic/main.go b/exp/examples/basic/main.go index bea07f89f..b904f4c3e 100644 --- a/exp/examples/basic/main.go +++ b/exp/examples/basic/main.go @@ -71,6 +71,7 @@ func main() { myWindow2.NavigateToURL("https://wails.io") myWindow.SetMinSize(600, 600) myWindow.SetMaxSize(650, 650) + myWindow.Center() }() diff --git a/exp/pkg/application/app_delegate.m b/exp/pkg/application/app_delegate.m index 921feb0d4..9f4b47daa 100644 --- a/exp/pkg/application/app_delegate.m +++ b/exp/pkg/application/app_delegate.m @@ -30,6 +30,34 @@ systemEventHandler(EventApplicationWillTerminate); } +- (void)applicationDidBecomeActive:(NSNotification *)aNotification +{ + systemEventHandler(EventApplicationDidBecomeActive); +} + +- (void)applicationWillHide:(NSNotification *)aNotification +{ + systemEventHandler(EventApplicationWillHide); +} + +- (void)applicationDidHide:(NSNotification *)aNotification +{ + systemEventHandler(EventApplicationDidHide); +} + +- (void)applicationWillUnhide:(NSNotification *)aNotification +{ + systemEventHandler(EventApplicationWillUnhide); +} + +- (void)applicationDidUnhide:(NSNotification *)aNotification +{ + systemEventHandler(EventApplicationDidUnhide); +} + + + + @end \ No newline at end of file diff --git a/exp/pkg/application/window.go b/exp/pkg/application/window.go index 33017a9ed..b0df941c9 100644 --- a/exp/pkg/application/window.go +++ b/exp/pkg/application/window.go @@ -26,6 +26,7 @@ type windowImpl interface { restore() setBackgroundColor(color *options.RGBA) run() + center() } type Window struct { @@ -209,3 +210,10 @@ func (w *Window) handleMessage(message string) { w.SetTitle("Hello World") } } + +func (w *Window) Center() { + if w.impl == nil { + return + } + w.impl.center() +} diff --git a/exp/pkg/application/window_darwin.go b/exp/pkg/application/window_darwin.go index d06cb4667..dc70da65d 100644 --- a/exp/pkg/application/window_darwin.go +++ b/exp/pkg/application/window_darwin.go @@ -399,6 +399,20 @@ void windowSetAppearanceTypeByName(void* nsWindow, const char *appearanceName) { }); } +// Center window on current monitor +void windowCenter(void* nsWindow) { + // Center window on main thread + dispatch_async(dispatch_get_main_queue(), ^{ + // get main window + NSWindow* window = (NSWindow*)nsWindow; + [window center]; + }); +} + + + + + */ import "C" import ( @@ -413,6 +427,10 @@ type macosWindow struct { options *options.Window } +func (w *macosWindow) center() { + C.windowCenter(w.nsWindow) +} + func (w *macosWindow) isMinimised() bool { return C.windowIsMinimised(w.nsWindow) == C.bool(true) } @@ -537,6 +555,8 @@ func (w *macosWindow) run() { } } + C.windowCenter(w.nsWindow) + if w.options.URL != "" { w.navigateToURL(w.options.URL) } @@ -550,3 +570,7 @@ func (w *macosWindow) setBackgroundColor(colour *options.RGBA) { } C.webviewSetBackgroundColor(w.nsWindow, C.int(colour.Red), C.int(colour.Green), C.int(colour.Blue), C.int(colour.Alpha)) } + +func (w *macosWindow) Center() { + C.windowCenter(w.nsWindow) +} diff --git a/exp/pkg/events/events.go b/exp/pkg/events/events.go index d172559e5..e2b189bc8 100644 --- a/exp/pkg/events/events.go +++ b/exp/pkg/events/events.go @@ -3,13 +3,29 @@ package events var Mac = newMacEvents() type macEvents struct { - ApplicationDidFinishLaunching string - ApplicationWillTerminate string + ApplicationDidFinishLaunching string + ApplicationWillTerminate string + ApplicationDidBecomeActive string + ApplicationWillUpdate string + ApplicationDidUpdate string + ApplicationWillFinishLaunching string + ApplicationWillHide string + ApplicationWillUnhide string + ApplicationDidHide string + ApplicationDidUnhide string } func newMacEvents() macEvents { return macEvents{ - ApplicationDidFinishLaunching: "mac:ApplicationDidFinishLaunching", - ApplicationWillTerminate: "mac:ApplicationWillTerminate", + ApplicationDidFinishLaunching: "mac:ApplicationDidFinishLaunching", + ApplicationWillTerminate: "mac:ApplicationWillTerminate", + ApplicationDidBecomeActive: "mac:ApplicationDidBecomeActive", + ApplicationWillUpdate: "mac:ApplicationWillUpdate", + ApplicationDidUpdate: "mac:ApplicationDidUpdate", + ApplicationWillFinishLaunching: "mac:ApplicationWillFinishLaunching", + ApplicationWillHide: "mac:ApplicationWillHide", + ApplicationWillUnhide: "mac:ApplicationWillUnhide", + ApplicationDidHide: "mac:ApplicationDidHide", + ApplicationDidUnhide: "mac:ApplicationDidUnhide", } } diff --git a/exp/pkg/events/events.h b/exp/pkg/events/events.h index f6cbc5f55..58f0ff57b 100644 --- a/exp/pkg/events/events.h +++ b/exp/pkg/events/events.h @@ -7,6 +7,14 @@ extern void systemEventHandler(char*); #define EventApplicationDidFinishLaunching "mac:ApplicationDidFinishLaunching" #define EventApplicationWillTerminate "mac:ApplicationWillTerminate" +#define EventApplicationDidBecomeActive "mac:ApplicationDidBecomeActive" +#define EventApplicationWillUpdate "mac:ApplicationWillUpdate" +#define EventApplicationDidUpdate "mac:ApplicationDidUpdate" +#define EventApplicationWillFinishLaunching "mac:ApplicationWillFinishLaunching" +#define EventApplicationWillHide "mac:ApplicationWillHide" +#define EventApplicationWillUnhide "mac:ApplicationWillUnhide" +#define EventApplicationDidHide "mac:ApplicationDidHide" +#define EventApplicationDidUnhide "mac:ApplicationDidUnhide" #endif \ No newline at end of file diff --git a/exp/pkg/events/events.txt b/exp/pkg/events/events.txt index 0f7fd4f70..68a422b9d 100644 --- a/exp/pkg/events/events.txt +++ b/exp/pkg/events/events.txt @@ -1,2 +1,10 @@ mac:ApplicationDidFinishLaunching -mac:ApplicationWillTerminate \ No newline at end of file +mac:ApplicationWillTerminate +mac:ApplicationDidBecomeActive +mac:ApplicationWillUpdate +mac:ApplicationDidUpdate +mac:ApplicationWillFinishLaunching +mac:ApplicationWillHide +mac:ApplicationWillUnhide +mac:ApplicationDidHide +mac:ApplicationDidUnhide