summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefano Pigozzi <stefano.pigozzi@gmail.com>2012-08-06 21:23:21 +0200
committerStefano Pigozzi <stefano.pigozzi@gmail.com>2012-08-16 22:28:27 +0200
commitdcb90fde256152851c853dff31c4978e5cc17f7c (patch)
tree1a584468641be65e462fdaedebf583537ba18273
parent31d0eb86f3081d965476beb186185d34fd697f61 (diff)
downloadmpv-dcb90fde256152851c853dff31c4978e5cc17f7c.tar.bz2
mpv-dcb90fde256152851c853dff31c4978e5cc17f7c.tar.xz
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.
-rw-r--r--libvo/cocoa_common.m57
1 files 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)