diff options
author | Russell Brenner <russellbrenner@google.com> | 2010-11-18 17:33:13 -0800 |
---|---|---|
committer | Russell Brenner <russellbrenner@google.com> | 2010-12-02 13:47:21 -0800 |
commit | 6b70adc33054f8aee8c54d0f460458a9df11b8a5 (patch) | |
tree | 103a13998c33944d6ab3b8318c509a037e639460 /WebCore/platform/mac/ContextMenuItemMac.mm | |
parent | bdf4ebc8e70b2d221b6ee7a65660918ecb1d33aa (diff) | |
download | external_webkit-6b70adc33054f8aee8c54d0f460458a9df11b8a5.zip external_webkit-6b70adc33054f8aee8c54d0f460458a9df11b8a5.tar.gz external_webkit-6b70adc33054f8aee8c54d0f460458a9df11b8a5.tar.bz2 |
Merge WebKit at r72274: Initial merge by git.
Change-Id: Ie51f0b4a16da82942bd516dce59cfb79ebbe25fb
Diffstat (limited to 'WebCore/platform/mac/ContextMenuItemMac.mm')
-rw-r--r-- | WebCore/platform/mac/ContextMenuItemMac.mm | 44 |
1 files changed, 36 insertions, 8 deletions
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<ContextMenuItem>& 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<ContextMenuItem>& 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) |