From daf0fd75e638729240f874a39ed7a28830ff02ec Mon Sep 17 00:00:00 2001 From: Ken Thomases Date: Mon, 7 Jan 2013 14:44:31 -0600 Subject: [PATCH] winemac: Add a custom NSApplication subclass, WineApplication. --- dlls/winemac.drv/Makefile.in | 1 + dlls/winemac.drv/cocoa_app.h | 30 +++++++++++++++++++ dlls/winemac.drv/cocoa_app.m | 58 ++++++++++++++++++++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 dlls/winemac.drv/cocoa_app.h create mode 100644 dlls/winemac.drv/cocoa_app.m diff --git a/dlls/winemac.drv/Makefile.in b/dlls/winemac.drv/Makefile.in index 2082b3733c0..38d8f7e7190 100644 --- a/dlls/winemac.drv/Makefile.in +++ b/dlls/winemac.drv/Makefile.in @@ -9,6 +9,7 @@ C_SRCS = \ window.c OBJC_SRCS = \ + cocoa_app.m \ cocoa_display.m @MAKE_DLL_RULES@ diff --git a/dlls/winemac.drv/cocoa_app.h b/dlls/winemac.drv/cocoa_app.h new file mode 100644 index 00000000000..cc3ede39e03 --- /dev/null +++ b/dlls/winemac.drv/cocoa_app.h @@ -0,0 +1,30 @@ +/* + * MACDRV Cocoa application class declaration + * + * Copyright 2011, 2012, 2013 Ken Thomases for CodeWeavers Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#import + +#include "macdrv_cocoa.h" + + +@interface WineApplication : NSApplication + + - (void) transformProcessToForeground; + +@end diff --git a/dlls/winemac.drv/cocoa_app.m b/dlls/winemac.drv/cocoa_app.m new file mode 100644 index 00000000000..ee7e2f868b0 --- /dev/null +++ b/dlls/winemac.drv/cocoa_app.m @@ -0,0 +1,58 @@ +/* + * MACDRV Cocoa application class + * + * Copyright 2011, 2012, 2013 Ken Thomases for CodeWeavers Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#import "cocoa_app.h" + + +@implementation WineApplication + + - (void) transformProcessToForeground + { + if ([self activationPolicy] != NSApplicationActivationPolicyRegular) + { + NSMenu* mainMenu; + NSMenu* submenu; + NSString* bundleName; + NSString* title; + NSMenuItem* item; + + [self setActivationPolicy:NSApplicationActivationPolicyRegular]; + [self activateIgnoringOtherApps:YES]; + + mainMenu = [[[NSMenu alloc] init] autorelease]; + + submenu = [[[NSMenu alloc] initWithTitle:@"Wine"] autorelease]; + bundleName = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString*)kCFBundleNameKey]; + if ([bundleName length]) + title = [NSString stringWithFormat:@"Quit %@", bundleName]; + else + title = @"Quit"; + item = [submenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"]; + [item setKeyEquivalentModifierMask:NSCommandKeyMask | NSAlternateKeyMask]; + item = [[[NSMenuItem alloc] init] autorelease]; + [item setTitle:@"Wine"]; + [item setSubmenu:submenu]; + [mainMenu addItem:item]; + + [self setMainMenu:mainMenu]; + } + } + +@end