Support activation policy

This commit is contained in:
Lea Anthony 2022-04-30 17:51:11 +10:00
commit ee50170374
No known key found for this signature in database
GPG key ID: 33DAF7BB90A58405
8 changed files with 25 additions and 19 deletions

View file

@ -17,6 +17,7 @@
@property bool startHidden;
@property bool startFullscreen;
@property (retain) WailsWindow* mainWindow;
@property int activationPolicy;
@end

View file

@ -26,7 +26,8 @@
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
processNotification(0); // Notify Go
processNotification(0); // Notify Go
[NSApp setActivationPolicy:self.activationPolicy];
[NSApp activateIgnoringOtherApps:YES];
if ( self.startFullscreen ) {
NSWindowCollectionBehavior behaviour = [self.mainWindow collectionBehavior];

View file

@ -18,7 +18,7 @@
#define WindowStartsFullscreen 3
WailsContext* Create(const char* title, int width, int height, int frameless, int resizable, int fullscreen, int fullSizeContent, int hideTitleBar, int titlebarAppearsTransparent, int hideTitle, int useToolbar, int hideToolbarSeparator, int webviewIsTransparent, int alwaysOnTop, int hideWindowOnClose, const char *appearance, int windowIsTranslucent, int debug, int windowStartState, int startsHidden, int minWidth, int minHeight, int maxWidth, int maxHeight);
void Run(void*, const char* url);
void Run(void *inctx, const char* url, int activationPolicy);
void SetTitle(void* ctx, const char *title);
void Center(void* ctx);

View file

@ -19,7 +19,7 @@ WailsContext* Create(const char* title, int width, int height, int frameless, in
WailsContext *result = [WailsContext new];
result.debug = debug;
if ( windowStartState == WindowStartsFullscreen ) {
fullscreen = 1;
}
@ -27,7 +27,7 @@ WailsContext* Create(const char* title, int width, int height, int frameless, in
[result CreateWindow:width :height :frameless :resizable :fullscreen :fullSizeContent :hideTitleBar :titlebarAppearsTransparent :hideTitle :useToolbar :hideToolbarSeparator :webviewIsTransparent :hideWindowOnClose :safeInit(appearance) :windowIsTranslucent :minWidth :minHeight :maxWidth :maxHeight];
[result SetTitle:safeInit(title)];
[result Center];
switch( windowStartState ) {
case WindowStartsMaximised:
[result.mainWindow zoom:nil];
@ -344,12 +344,11 @@ void AppendSeparator(void* inMenu) {
[menu AppendSeparator];
}
void Run(void *inctx, const char* url) {
void Run(void *inctx, const char* url, int activationPolicy) {
WailsContext *ctx = (__bridge WailsContext*) inctx;
NSApplication *app = [NSApplication sharedApplication];
AppDelegate* delegate = [AppDelegate new];
delegate.activationPolicy = activationPolicy;
[app setDelegate:(id)delegate];
ctx.appdelegate = delegate;
delegate.mainWindow = ctx.mainWindow;

View file

@ -23,6 +23,7 @@
@property NSSize userMinSize;
@property NSSize userMaxSize;
@property int activationPolicy;
- (BOOL) canBecomeKeyWindow;
- (void) applyWindowConstraints;

View file

@ -178,7 +178,11 @@ func (f *Frontend) Run(ctx context.Context) error {
f.frontendOptions.OnStartup(f.ctx)
}
}()
mainWindow.Run(f.startURL.String())
var activationPolicy C.int
if f.frontendOptions != nil && f.frontendOptions.Mac != nil {
activationPolicy = C.int(f.frontendOptions.Mac.ActivationPolicy)
}
mainWindow.Run(f.startURL.String(), activationPolicy)
return nil
}

View file

@ -123,9 +123,9 @@ func (w *Window) Center() {
C.Center(w.context)
}
func (w *Window) Run(url string) {
func (w *Window) Run(url string, activationPolicy C.int) {
_url := C.CString(url)
C.Run(w.context, _url)
C.Run(w.context, _url, activationPolicy)
C.free(unsafe.Pointer(_url))
}

View file

@ -1,12 +1,12 @@
package mac
//type ActivationPolicy int
//
//const (
// NSApplicationActivationPolicyRegular ActivationPolicy = 0
// NSApplicationActivationPolicyAccessory ActivationPolicy = 1
// NSApplicationActivationPolicyProhibited ActivationPolicy = 2
//)
type ActivationPolicy int
const (
NSApplicationActivationPolicyRegular ActivationPolicy = 0
NSApplicationActivationPolicyAccessory ActivationPolicy = 1
NSApplicationActivationPolicyProhibited ActivationPolicy = 2
)
type AboutInfo struct {
Title string
@ -20,7 +20,7 @@ type Options struct {
Appearance AppearanceType
WebviewIsTransparent bool
WindowIsTranslucent bool
//ActivationPolicy ActivationPolicy
About *AboutInfo
About *AboutInfo
ActivationPolicy ActivationPolicy
//URLHandlers map[string]func(string)
}