From c90bfc310aadf054474815461b97924f406e3a13 Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Sat, 6 Nov 2021 10:40:02 +1100 Subject: [PATCH] [mac] Fix lifecycle hooks --- v2/internal/appng/app_production.go | 4 ---- v2/internal/frontend/desktop/darwin/WailsContext.h | 4 +--- v2/internal/frontend/desktop/darwin/WailsContext.m | 6 ++++++ v2/internal/frontend/desktop/darwin/frontend.go | 11 +++++++++++ 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/v2/internal/appng/app_production.go b/v2/internal/appng/app_production.go index f6d46aa78..cdc145180 100644 --- a/v2/internal/appng/app_production.go +++ b/v2/internal/appng/app_production.go @@ -35,10 +35,6 @@ type App struct { func (a *App) Run() error { err := a.frontend.Run(a.ctx) - if a.shutdownCallback != nil { - a.shutdownCallback(a.ctx) - } - return err } diff --git a/v2/internal/frontend/desktop/darwin/WailsContext.h b/v2/internal/frontend/desktop/darwin/WailsContext.h index 0c5232f7d..c39687e96 100644 --- a/v2/internal/frontend/desktop/darwin/WailsContext.h +++ b/v2/internal/frontend/desktop/darwin/WailsContext.h @@ -13,14 +13,12 @@ #define ON_MAIN_THREAD(str) dispatch_async(dispatch_get_main_queue(), ^{ str; }); #define unicode(input) [NSString stringWithFormat:@"%C", input] -#define STREQ(a,b) strcmp(a, b) == 0 - @interface WailsWindow : NSWindow - (BOOL)canBecomeKeyWindow; @end -@interface WailsContext : NSObject +@interface WailsContext : NSObject @property (retain) WailsWindow* mainWindow; @property (retain) WKWebView* webview; diff --git a/v2/internal/frontend/desktop/darwin/WailsContext.m b/v2/internal/frontend/desktop/darwin/WailsContext.m index 45ba23e34..85da9009e 100644 --- a/v2/internal/frontend/desktop/darwin/WailsContext.m +++ b/v2/internal/frontend/desktop/darwin/WailsContext.m @@ -238,6 +238,8 @@ [self.webview setValue:[NSNumber numberWithBool:!webviewIsTransparent] forKey:@"drawsBackground"]; } + [self.webview setNavigationDelegate:self]; + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setBool:FALSE forKey:@"NSAutomaticQuoteSubstitutionEnabled"]; @@ -395,6 +397,10 @@ } +- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation { + processMessage("DomReady"); +} + - (void)userContentController:(nonnull WKUserContentController *)userContentController didReceiveScriptMessage:(nonnull WKScriptMessage *)message { NSString *m = message.body; diff --git a/v2/internal/frontend/desktop/darwin/frontend.go b/v2/internal/frontend/desktop/darwin/frontend.go index 2e989066a..265a7aef2 100644 --- a/v2/internal/frontend/desktop/darwin/frontend.go +++ b/v2/internal/frontend/desktop/darwin/frontend.go @@ -214,6 +214,9 @@ func (f *Frontend) WindowSetRGBA(col *options.RGBA) { func (f *Frontend) Quit() { f.mainWindow.Quit() + if f.frontendOptions.OnShutdown != nil { + f.frontendOptions.OnShutdown(f.ctx) + } } type EventNotify struct { @@ -235,6 +238,14 @@ func (f *Frontend) Notify(name string, data ...interface{}) { } func (f *Frontend) processMessage(message string) { + + if message == "DomReady" { + if f.frontendOptions.OnDomReady != nil { + f.frontendOptions.OnDomReady(f.ctx) + } + return + } + result, err := f.dispatcher.ProcessMessage(message, f) if err != nil { f.logger.Error(err.Error())