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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
15 additions and
1 deletions
-
native/Avalonia.Native/src/OSX/menu.mm
-
native/Avalonia.Native/src/OSX/window.h
-
native/Avalonia.Native/src/OSX/window.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 |
|
|
|
|
|
|
|
@ -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; |
|
|
|
|
|
|
|
@ -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 |
|
|
|
{ |
|
|
|
} |
|
|
|
|