Index: chrome/browser/cocoa/wrench_menu_controller.mm |
=================================================================== |
--- chrome/browser/cocoa/wrench_menu_controller.mm (revision 55582) |
+++ chrome/browser/cocoa/wrench_menu_controller.mm (working copy) |
@@ -4,6 +4,7 @@ |
#import "chrome/browser/cocoa/wrench_menu_controller.h" |
+#include "app/l10n_util.h" |
#include "app/menus/menu_model.h" |
#include "base/sys_string_conversions.h" |
#include "chrome/app/chrome_dll_resource.h" |
@@ -11,6 +12,8 @@ |
#include "chrome/browser/browser_window.h" |
#import "chrome/browser/cocoa/toolbar_controller.h" |
#include "chrome/browser/wrench_menu_model.h" |
+#include "grit/chromium_strings.h" |
+#include "grit/generated_resources.h" |
@interface WrenchMenuController (Private) |
- (WrenchMenuModel*)wrenchMenuModel; |
@@ -110,6 +113,36 @@ |
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 |
// whole menu item accordingly. |
- (void)adjustPositioning { |