From dcb90fde256152851c853dff31c4978e5cc17f7c Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Mon, 6 Aug 2012 21:23:21 +0200 Subject: cocoa_common: refactor menu generation This commit is supposed to make the menu generation a little more readable. It also fixes menu generation for the `cmd+q` entry. --- libvo/cocoa_common.m | 57 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/libvo/cocoa_common.m b/libvo/cocoa_common.m index 6e2b439a77..42ac47f247 100644 --- a/libvo/cocoa_common.m +++ b/libvo/cocoa_common.m @@ -366,7 +366,6 @@ int vo_cocoa_check_events(struct vo *vo) return 0; l_vo = vo; [NSApp sendEvent:event]; - l_vo = nil; if (s->did_resize) { s->did_resize = NO; @@ -422,27 +421,53 @@ int vo_cocoa_cgl_color_size(void) return 8; } +static NSMenuItem *new_menu_item(NSMenu *parent_menu, NSString *title, + SEL action, NSString *key_equivalent) +{ + NSMenuItem *new_item = [[NSMenuItem alloc] + initWithTitle:title + action:action + keyEquivalent:key_equivalent]; + [parent_menu addItem:new_item]; + return [new_item autorelease]; +} + +static NSMenuItem *new_main_menu_item(NSMenu *parent_menu, NSMenu *child_menu, + NSString *title) +{ + NSMenuItem *new_item = [[NSMenuItem alloc] + initWithTitle:title + action:nil + keyEquivalent:@""]; + [new_item setSubmenu:child_menu]; + [parent_menu addItem:new_item]; + return [new_item autorelease]; +} + void create_menu() { - NSMenu *menu; - NSMenuItem *menuItem; + NSAutoreleasePool *pool = [NSAutoreleasePool new]; + NSMenu *main_menu, *m_menu, *w_menu; + NSMenuItem *app_menu_item; + + main_menu = [[NSMenu new] autorelease]; + app_menu_item = [[NSMenuItem new] autorelease]; + [main_menu addItem:app_menu_item]; + [NSApp setMainMenu: main_menu]; - menu = [[NSMenu new] autorelease]; - menuItem = [[NSMenuItem new] autorelease]; - [menu addItem: menuItem]; - [NSApp setMainMenu: menu]; + m_menu = [[[NSMenu alloc] initWithTitle:@"Movie"] autorelease]; + new_menu_item(m_menu, @"Half Size", @selector(halfSize), @"0"); + new_menu_item(m_menu, @"Normal Size", @selector(normalSize), @"1"); + new_menu_item(m_menu, @"Double Size", @selector(doubleSize), @"2"); - menu = [[NSMenu alloc] initWithTitle:@"Movie"]; - menuItem = [[NSMenuItem alloc] initWithTitle:@"Half Size" action:@selector(halfSize) keyEquivalent:@"0"]; [menu addItem:menuItem]; - menuItem = [[NSMenuItem alloc] initWithTitle:@"Normal Size" action:@selector(normalSize) keyEquivalent:@"1"]; [menu addItem:menuItem]; - menuItem = [[NSMenuItem alloc] initWithTitle:@"Double Size" action:@selector(doubleSize) keyEquivalent:@"2"]; [menu addItem:menuItem]; + new_main_menu_item(main_menu, m_menu, @"Movie"); - menuItem = [[NSMenuItem alloc] initWithTitle:@"Movie" action:nil keyEquivalent:@""]; - [menuItem setSubmenu:menu]; - [[NSApp mainMenu] addItem:menuItem]; + w_menu = [[[NSMenu alloc] initWithTitle:@"Window"] autorelease]; + new_menu_item(w_menu, @"Minimize", @selector(performMiniaturize:), @"m"); + new_menu_item(w_menu, @"Zoom", @selector(performZoom:), @"z"); - [menu release]; - [menuItem release]; + new_main_menu_item(main_menu, w_menu, @"Window"); + [pool release]; } bool is_lion_or_better(void) -- cgit v1.2.3