/* * 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]; submenu = [[[NSMenu alloc] initWithTitle:@"Window"] autorelease]; [submenu addItemWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@""]; [submenu addItemWithTitle:@"Zoom" action:@selector(performZoom:) keyEquivalent:@""]; [submenu addItem:[NSMenuItem separatorItem]]; [submenu addItemWithTitle:@"Bring All to Front" action:@selector(arrangeInFront:) keyEquivalent:@""]; item = [[[NSMenuItem alloc] init] autorelease]; [item setTitle:@"Window"]; [item setSubmenu:submenu]; [mainMenu addItem:item]; [self setMainMenu:mainMenu]; [self setWindowsMenu:submenu]; } } @end /*********************************************************************** * OnMainThread * * Run a block on the main thread synchronously. */ void OnMainThread(dispatch_block_t block) { dispatch_sync(dispatch_get_main_queue(), block); } /*********************************************************************** * OnMainThreadAsync * * Run a block on the main thread asynchronously. */ void OnMainThreadAsync(dispatch_block_t block) { dispatch_async(dispatch_get_main_queue(), block); }