| Index: webkit/glue/webmenurunner_mac.mm
|
| diff --git a/webkit/glue/webmenurunner_mac.mm b/webkit/glue/webmenurunner_mac.mm
|
| index b7e48bafcd46256fcd2c0b2e6843166960e21ddf..3e1376aafc3311cca173896de95a0f69653c7e83 100644
|
| --- a/webkit/glue/webmenurunner_mac.mm
|
| +++ b/webkit/glue/webmenurunner_mac.mm
|
| @@ -91,8 +91,7 @@ BOOL gNewNSMenuAPI;
|
| attributes:attrs]);
|
| [menuItem setAttributedTitle:attrTitle];
|
| }
|
| - if (gNewNSMenuAPI)
|
| - [menuItem setTag:[menu_ numberOfItems] - 1];
|
| + [menuItem setTag:[menu_ numberOfItems] - 1];
|
| }
|
|
|
| // Reflects the result of the user's interaction with the popup menu. If NO, the
|
| @@ -113,8 +112,13 @@ BOOL gNewNSMenuAPI;
|
| withBounds:(NSRect)bounds
|
| initialIndex:(int)index {
|
| if (gNewNSMenuAPI) {
|
| - NSMenuItem* selectedItem = [menu_ itemAtIndex:index];
|
| - [selectedItem setState:NSOnState];
|
| + // index might be out of bounds, in which case we set no selection.
|
| + NSMenuItem* selectedItem = [menu_ itemWithTag:index];
|
| + if (selectedItem) {
|
| + [selectedItem setState:NSOnState];
|
| + } else {
|
| + selectedItem = [menu_ itemWithTag:0];
|
| + }
|
| NSPoint anchor = NSMakePoint(NSMinX(bounds) + kPopupXOffset,
|
| NSMaxY(bounds));
|
| [menu_ popUpMenuPositioningItem:selectedItem
|
| @@ -128,7 +132,9 @@ BOOL gNewNSMenuAPI;
|
| pullsDown:NO];
|
| [button autorelease];
|
| [button setMenu:menu_];
|
| - [button selectItemAtIndex:index];
|
| + // We use selectItemWithTag below so if the index is out-of-bounds nothing
|
| + // bad happens.
|
| + [button selectItemWithTag:index];
|
| [button setFont:[NSFont menuFontOfSize:fontSize_]];
|
|
|
| // Create a dummy view to associate the popup with, since the OS will use
|
|
|