Browse Source

implement osx quit menu item.

pull/3111/head
Dan Walmsley 7 years ago
parent
commit
4454af5613
  1. 4
      native/Avalonia.Native/src/OSX/menu.mm
  2. 1
      native/Avalonia.Native/src/OSX/window.h
  3. 10
      native/Avalonia.Native/src/OSX/window.mm

4
native/Avalonia.Native/src/OSX/menu.mm

@ -1,6 +1,7 @@
#include "common.h"
#include "menu.h"
#include "window.h"
@implementation AvnMenu
@end
@ -283,7 +284,8 @@ extern void SetAppMenu (NSString* appName, IAvnAppMenu* menu)
auto quitItem = [[NSMenuItem alloc] init];
quitItem.title = [@"Quit " stringByAppendingString:appName];
quitItem.keyEquivalent = @"q";
quitItem.action = @selector(terminate:);
quitItem.target = [AvnWindow class];
quitItem.action = @selector(closeAll);
[appMenu addItem:quitItem];
}
else

1
native/Avalonia.Native/src/OSX/window.h

@ -15,6 +15,7 @@ class WindowBaseImpl;
@end
@interface AvnWindow : NSWindow <NSWindowDelegate>
+(void) closeAll;
-(AvnWindow* _Nonnull) initWithParent: (WindowBaseImpl* _Nonnull) parent;
-(void) setCanBecomeKeyAndMain;
-(void) pollModalSession: (NSModalSession _Nonnull) session;

10
native/Avalonia.Native/src/OSX/window.mm

@ -1076,6 +1076,16 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent
bool _isAppMenuApplied;
}
+(void)closeAll
{
auto numWindows = [[NSApp windows] count];
for(int i = 0; i < numWindows; i++)
{
[[[NSApp windows] objectAtIndex:i] performClose:nil];
}
}
- (void)dealloc
{
}

Loading…
Cancel
Save