Index: chrome/browser/cocoa/wrench_menu_controller.mm |
diff --git a/chrome/browser/cocoa/wrench_menu_controller.mm b/chrome/browser/cocoa/wrench_menu_controller.mm |
index 11d40a2b6e3eb43576352bc24715d8db1ff94042..49661570aa3749a517e05328756cc34702a45ba3 100644 |
--- a/chrome/browser/cocoa/wrench_menu_controller.mm |
+++ b/chrome/browser/cocoa/wrench_menu_controller.mm |
@@ -63,11 +63,6 @@ class ZoomLevelObserver : public NotificationObserver { |
return self; |
} |
-- (void)setWrenchMenuModel:(WrenchMenuModel*)model { |
- wrench_model_ = model; |
- [self setModel:model->menu_model()]; |
-} |
- |
- (void)addItemToMenu:(NSMenu*)menu |
atIndex:(NSInteger)index |
fromModel:(menus::MenuModel*)model |
@@ -171,7 +166,37 @@ class ZoomLevelObserver : public NotificationObserver { |
} |
- (WrenchMenuModel*)wrenchMenuModel { |
- return wrench_model_; |
+ return static_cast<WrenchMenuModel*>(model_); |
+} |
+ |
+// Inserts the update available notification menu item. |
+- (void)insertUpdateAvailableItem { |
+ WrenchMenuModel* model = [self wrenchMenuModel]; |
+ // Don't insert the item multiple times. |
+ if (!model || model->GetIndexOfCommandId(IDC_ABOUT) != -1) |
+ return; |
+ |
+ // Update the model manually because the model is static because other |
+ // platforms always have an About item. |
+ int index = model->GetIndexOfCommandId(IDC_OPTIONS) + 1; |
+ model->InsertItemAt(index, IDC_ABOUT, |
+ l10n_util::GetStringFUTF16(IDS_ABOUT, |
+ l10n_util::GetStringUTF16(IDS_PRODUCT_NAME))); |
+ |
+ // The model does not broadcast change notifications to its delegate, so |
+ // insert the actual menu item ourselves. |
+ NSInteger menuIndex = [[self menu] indexOfItemWithTag:index]; |
+ [self addItemToMenu:[self menu] |
+ atIndex:menuIndex |
+ fromModel:model |
+ modelIndex:index]; |
+ |
+ // Since the tag of each menu item is the index within the model, they need |
+ // to be adjusted after insertion. |
+ for (NSInteger i = menuIndex + 1; i < [[self menu] numberOfItems]; ++i) { |
+ NSMenuItem* item = [[self menu] itemAtIndex:i]; |
+ [item setTag:[item tag] + 1]; |
+ } |
} |
// Fit the localized strings into the Cut/Copy/Paste control, then resize the |