summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/mac/ContextMenuItemMac.mm
diff options
context:
space:
mode:
authorRussell Brenner <russellbrenner@google.com>2010-11-18 17:33:13 -0800
committerRussell Brenner <russellbrenner@google.com>2010-12-02 13:47:21 -0800
commit6b70adc33054f8aee8c54d0f460458a9df11b8a5 (patch)
tree103a13998c33944d6ab3b8318c509a037e639460 /WebCore/platform/mac/ContextMenuItemMac.mm
parentbdf4ebc8e70b2d221b6ee7a65660918ecb1d33aa (diff)
downloadexternal_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.mm44
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)