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

Unified Diff: chrome/browser/app_controller_mac.mm

Issue 18089012: Swap main menu with app-specific menu when app window focused. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 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/app_controller_mac.mm
diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm
index b826354036cccdb759e162d615228b1b7d1949fd..8c65ce21e6952ac831c200cbdfb8767f5dac8522 100644
--- a/chrome/browser/app_controller_mac.mm
+++ b/chrome/browser/app_controller_mac.mm
@@ -67,6 +67,7 @@
#include "chrome/common/chrome_paths_internal.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/cloud_print/cloud_print_class_mac.h"
+#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/mac/app_mode_common.h"
#include "chrome/common/pref_names.h"
@@ -1310,6 +1311,34 @@ void RecordLastRunAppBundlePath() {
WorkAreaChanged());
}
+- (void)setMenuBarToApp:(NSString*)app_id
+ withTitle:(NSString*)title {
+ NSMenu* mainMenu = [NSApp mainMenu];
+
+ for (NSMenuItem* item in [mainMenu itemArray])
+ [item setHidden:YES];
+
+ NSMenuItem* itemForApp = [mainMenu itemWithTitle:app_id];
+ if (!itemForApp) {
+ NSMenuItem* appMenuItem = [[NSMenuItem alloc]
tapted 2013/06/28 04:09:43 there's a memory leak here ;) - you need scoped_n
jackhou1 2013/07/04 01:57:55 Done.
+ initWithTitle:app_id
+ action:@selector(itemSelected:)
tapted 2013/06/28 04:09:43 I think the action can be `nil`, since we aren't s
jackhou1 2013/07/04 01:57:55 Done.
+ keyEquivalent:@""];
+ NSMenu* appMenu = [[NSMenu alloc] initWithTitle:title];
tapted 2013/06/28 04:09:43 scoped_nsobject<NSMenu>
jackhou1 2013/07/04 01:57:55 Done.
+ [appMenuItem setSubmenu:appMenu];
+ [mainMenu addItem:appMenuItem];
+ }
+ [itemForApp setHidden:NO];
tapted 2013/06/28 04:09:43 maybe in an else {? you're not re-assigning, so it
jackhou1 2013/07/04 01:57:55 Done.
+}
+
+- (void)setMenuBarToChrome {
+ NSMenu* mainMenu = [NSApp mainMenu];
tapted 2013/06/28 04:09:43 nit: probably don't need this temporary
jackhou1 2013/07/04 01:57:55 Done.
+ for (NSMenuItem* item in [mainMenu itemArray]) {
+ const std::string& title = base::SysNSStringToUTF8([item title]);
+ [item setHidden:extensions::Extension::IdIsValid(title)];
tapted 2013/06/28 04:09:43 hm.. this feels a bit odd.. Swapping out [NSApp ma
jackhou1 2013/07/04 01:57:55 Done.
+ }
+}
+
@end // @implementation AppController
//---------------------------------------------------------------------------

Powered by Google App Engine
This is Rietveld 408576698