Browse Source

Merge pull request #3111 from AvaloniaUI/feature/osx-correctly-implement-quit

implement osx quit menu item.
pull/3116/head
Jumar Macato 7 years ago
committed by GitHub
parent
commit
bfd07a872f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      native/Avalonia.Native/src/OSX/menu.mm
  2. 1
      native/Avalonia.Native/src/OSX/window.h
  3. 11
      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;

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

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

Loading…
Cancel
Save