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

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

Issue 3181029: Mac: Show a context menu for poup window. (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/browser_window_controller.mm
diff --git a/chrome/browser/cocoa/browser_window_controller.mm b/chrome/browser/cocoa/browser_window_controller.mm
index d9373a89fd637c7bd50bcae21f6a3091fa6ac655..f216b6f66d56901e7effbca494e5b718662cfe49 100644
--- a/chrome/browser/cocoa/browser_window_controller.mm
+++ b/chrome/browser/cocoa/browser_window_controller.mm
@@ -8,6 +8,7 @@
#include "app/l10n_util.h"
#include "app/l10n_util_mac.h"
+#include "app/menus/simple_menu_model.h"
#include "base/mac_util.h"
#include "base/nsimage_cache_mac.h"
#include "base/scoped_nsdisable_screen_updates.h"
@@ -38,6 +39,7 @@
#import "chrome/browser/cocoa/fullscreen_window.h"
#import "chrome/browser/cocoa/infobar_container_controller.h"
#import "chrome/browser/cocoa/location_bar/autocomplete_text_field_editor.h"
+#import "chrome/browser/cocoa/menu_controller.h"
#import "chrome/browser/cocoa/sad_tab_controller.h"
#import "chrome/browser/cocoa/status_bubble_mac.h"
#import "chrome/browser/cocoa/tab_contents_controller.h"
@@ -142,6 +144,40 @@
@end
+// BrowserWindowPopupMenuController subclasses MenuController to
viettrungluu 2010/08/20 17:02:00 Why is this in browser_window_controller.mm?
+// provide menu items for the popup context menu.
+@interface BrowserWindowPopupMenuController : MenuController {
+ scoped_ptr<menus::SimpleMenuModel> popupModel_;
viettrungluu 2010/08/20 17:02:00 @private
+}
+
+- (id)initWithDelegate:(menus::SimpleMenuModel::Delegate*)delegate;
+@end
+
+@implementation BrowserWindowPopupMenuController
+- (menus::SimpleMenuModel*)newModelFor:(menus::SimpleMenuModel::Delegate*)delegate {
viettrungluu 2010/08/20 17:02:00 80 chars
+ menus::SimpleMenuModel* result = new menus::SimpleMenuModel(delegate);
+ result->AddItemWithStringId(IDC_COPY_URL,
+ IDS_APP_MENU_COPY_URL);
+ result->AddItemWithStringId(IDC_SHOW_AS_TAB,
+ IDS_SHOW_AS_TAB);
+ result->AddSeparator();
+ result->AddItemWithStringId(IDC_RELOAD, IDS_APP_MENU_RELOAD);
+ result->AddItemWithStringId(IDC_FORWARD,
+ IDS_CONTENT_CONTEXT_FORWARD);
+ result->AddItemWithStringId(IDC_BACK,
+ IDS_CONTENT_CONTEXT_BACK);
+ return result;
+}
+
+- (id)initWithDelegate:(menus::SimpleMenuModel::Delegate*)delegate {
+ if ((self = [super init]) != nil) {
viettrungluu 2010/08/20 17:02:00 '!= nil' not needed
+ popupModel_.reset([self newModelFor:delegate]);
+ [self setModel: popupModel_.get()];
viettrungluu 2010/08/20 17:02:00 no space after ':'
+ }
+
+ return self;
+}
+@end
// IncognitoImageView subclasses NSImageView to allow mouse events to pass
// through it so you can drag the window by dragging on the spy guy
@@ -1640,6 +1676,14 @@ willAnimateFromState:(bookmarks::VisualState)oldState
[sheet orderOut:self];
}
+- (NSMenu*)popupContextMenu {
viettrungluu 2010/08/20 17:02:00 Should you check that this is a popup window?
+ if (!popupMenuController_) {
+ popupMenuController_.reset(
+ [[BrowserWindowPopupMenuController alloc] initWithDelegate:windowShim_.get()]);
viettrungluu 2010/08/20 17:02:00 80 chars
+ }
+
+ return [popupMenuController_ menu];
+}
@end // @implementation BrowserWindowController

Powered by Google App Engine
This is Rietveld 408576698