Index: webkit/glue/webmenurunner_mac.mm |
=================================================================== |
--- webkit/glue/webmenurunner_mac.mm (revision 14785) |
+++ webkit/glue/webmenurunner_mac.mm (working copy) |
@@ -6,13 +6,24 @@ |
#include "base/sys_string_conversions.h" |
+@interface WebMenuRunner (PrivateAPI) |
+ |
+// Worker function used during initialization. |
+- (void)addItem:(const WebMenuItem&)item; |
+ |
+// A callback for the menu controller object to call when an item is selected |
+// from the menu. This is not called if the menu is dismissed without a |
+// selection. |
+- (void)menuItemSelected:(id)sender; |
+ |
+@end // WebMenuRunner (PrivateAPI) |
+ |
@implementation WebMenuRunner |
- (id)initWithItems:(const std::vector<WebMenuItem>&)items { |
if ((self = [super init])) { |
- menu_ = [[NSMenu alloc] initWithTitle:@""]; |
+ menu_.reset([[NSMenu alloc] initWithTitle:@""]); |
[menu_ setAutoenablesItems:NO]; |
- menuItemWasChosen_ = NO; |
index_ = -1; |
for (int i = 0; i < static_cast<int>(items.size()); ++i) |
[self addItem:items[i]]; |
@@ -20,11 +31,6 @@ |
return self; |
} |
-- (void)dealloc { |
- [menu_ release]; |
- [super dealloc]; |
-} |
- |
- (void)addItem:(const WebMenuItem&)item { |
if (item.type == WebMenuItem::SEPARATOR) { |
[menu_ addItem:[NSMenuItem separatorItem]]; |
@@ -32,11 +38,11 @@ |
} |
NSString* title = base::SysUTF16ToNSString(item.label); |
- NSMenuItem* menu_item = [menu_ addItemWithTitle:title |
- action:@selector(menuItemSelected:) |
- keyEquivalent:@""]; |
- [menu_item setEnabled:(item.enabled && item.type != WebMenuItem::GROUP)]; |
- [menu_item setTarget:self]; |
+ NSMenuItem* menuItem = [menu_ addItemWithTitle:title |
+ action:@selector(menuItemSelected:) |
+ keyEquivalent:@""]; |
+ [menuItem setEnabled:(item.enabled && item.type != WebMenuItem::GROUP)]; |
+ [menuItem setTarget:self]; |
} |
// Reflects the result of the user's interaction with the popup menu. If NO, the |
@@ -76,10 +82,12 @@ |
@end // WebMenuRunner |
+namespace webkit_glue { |
+ |
// Helper function for manufacturing input events to send to WebKit. |
-NSEvent* CreateEventForMenuAction(BOOL item_chosen, int window_num, |
- int item_height, int selected_index, |
- NSRect menu_bounds, NSRect view_bounds) { |
+NSEvent* EventWithMenuAction(BOOL item_chosen, int window_num, |
+ int item_height, int selected_index, |
+ NSRect menu_bounds, NSRect view_bounds) { |
NSEvent* event = nil; |
double event_time = (double)(AbsoluteToDuration(UpTime())) / 1000.0; |
@@ -128,3 +136,5 @@ |
return event; |
} |
+ |
+} // namespace webkit_glue |