From 6b70adc33054f8aee8c54d0f460458a9df11b8a5 Mon Sep 17 00:00:00 2001 From: Russell Brenner Date: Thu, 18 Nov 2010 17:33:13 -0800 Subject: Merge WebKit at r72274: Initial merge by git. Change-Id: Ie51f0b4a16da82942bd516dce59cfb79ebbe25fb --- WebCore/platform/mac/ContextMenuItemMac.mm | 44 ++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 8 deletions(-) (limited to 'WebCore/platform/mac/ContextMenuItemMac.mm') diff --git a/WebCore/platform/mac/ContextMenuItemMac.mm b/WebCore/platform/mac/ContextMenuItemMac.mm index ce779ec..2d72ba9 100644 --- a/WebCore/platform/mac/ContextMenuItemMac.mm +++ b/WebCore/platform/mac/ContextMenuItemMac.mm @@ -58,22 +58,39 @@ ContextMenuItem::ContextMenuItem(ContextMenu* subMenu) setSubMenu(subMenu); } -ContextMenuItem::ContextMenuItem(ContextMenuItemType type, ContextMenuAction action, const String& title, ContextMenu* subMenu) +static PlatformMenuItemDescription createPlatformMenuItemDescription(ContextMenuItemType type, ContextMenuAction action, const String& title, bool enabled, bool checked) { - if (type == SeparatorType) { - m_platformDescription = [NSMenuItem separatorItem]; - return; - } + if (type == SeparatorType) + return [[NSMenuItem separatorItem] retain]; NSMenuItem* item = [[NSMenuItem alloc] initWithTitle:title action:nil keyEquivalent:@""]; - m_platformDescription = item; - [item release]; + [item setEnabled:enabled]; + [item setState:checked ? NSOnState : NSOffState]; + [item setTag:action]; + + return item; +} + +ContextMenuItem::ContextMenuItem(ContextMenuItemType type, ContextMenuAction action, const String& title, ContextMenu* subMenu) +{ + m_platformDescription.adoptNS(createPlatformMenuItemDescription(type, action, title, true, false)); - [m_platformDescription.get() setTag:action]; if (subMenu) setSubMenu(subMenu); } +ContextMenuItem::ContextMenuItem(ContextMenuItemType type, ContextMenuAction action, const String& title, bool enabled, bool checked) +{ + m_platformDescription.adoptNS(createPlatformMenuItemDescription(type, action, title, enabled, checked)); +} + +ContextMenuItem::ContextMenuItem(ContextMenuAction action, const String& title, bool enabled, bool checked, Vector& subMenuItems) +{ + m_platformDescription.adoptNS(createPlatformMenuItemDescription(SubmenuType, action, title, enabled, checked)); + + setSubMenu(subMenuItems); +} + ContextMenuItem::~ContextMenuItem() { } @@ -136,6 +153,17 @@ void ContextMenuItem::setSubMenu(ContextMenu* menu) [subMenu release]; } +void ContextMenuItem::setSubMenu(Vector& subMenuItems) +{ + NSMenu* subMenu = [[NSMenu alloc] init]; + [subMenu setAutoenablesItems:NO]; + for (unsigned i = 0; i < subMenuItems.size(); ++i) + [subMenu addItem:subMenuItems[i].releasePlatformDescription()]; + + [m_platformDescription.get() setSubmenu:subMenu]; + [subMenu release]; +} + void ContextMenuItem::setChecked(bool checked) { if (checked) -- cgit v1.1