Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3052)

Unified Diff: chrome/browser/cocoa/wrench_menu_controller.mm

Issue 3163035: Revert "Clean up the WrenchMenuModel so that it uses SimpleMenu::Delegate." (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « chrome/browser/cocoa/wrench_menu_controller.h ('k') | chrome/browser/cocoa/wrench_menu_controller_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698