| Index: chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm
|
| diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm
|
| index 621df23db52d7616a3d358f0686211336a2dc003..ea7b9a66af0684e8bfbb867cea2257eb9a60afab 100644
|
| --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm
|
| +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm
|
| @@ -4,6 +4,8 @@
|
|
|
| #import <AppKit/AppKit.h>
|
|
|
| +#include "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h"
|
| +
|
| #include "base/sys_string_conversions.h"
|
| #include "chrome/app/chrome_command_ids.h"
|
| #import "chrome/browser/app_controller_mac.h"
|
| @@ -11,7 +13,6 @@
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/profiles/profile_manager.h"
|
| #include "chrome/browser/ui/browser_list.h"
|
| -#include "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h"
|
| #import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h"
|
| #include "grit/generated_resources.h"
|
| #include "grit/theme_resources.h"
|
| @@ -23,7 +24,20 @@
|
|
|
| BookmarkMenuBridge::BookmarkMenuBridge(Profile* profile,
|
| NSMenu *menu)
|
| - : menuIsValid_(false),
|
| + : menu_is_valid_(false),
|
| + root_node_(NULL),
|
| + profile_(profile),
|
| + controller_([[BookmarkMenuCocoaController alloc] initWithBridge:this
|
| + andMenu:menu]) {
|
| + if (GetBookmarkModel())
|
| + ObserveBookmarkModel();
|
| +}
|
| +
|
| +BookmarkMenuBridge::BookmarkMenuBridge(const BookmarkNode* root_node,
|
| + Profile* profile,
|
| + NSMenu* menu)
|
| + : menu_is_valid_(false),
|
| + root_node_(root_node),
|
| profile_(profile),
|
| controller_([[BookmarkMenuCocoaController alloc] initWithBridge:this
|
| andMenu:menu]) {
|
| @@ -35,7 +49,6 @@ BookmarkMenuBridge::~BookmarkMenuBridge() {
|
| BookmarkModel *model = GetBookmarkModel();
|
| if (model)
|
| model->RemoveObserver(this);
|
| - [controller_ release];
|
| }
|
|
|
| NSMenu* BookmarkMenuBridge::BookmarkMenu() {
|
| @@ -57,7 +70,7 @@ void BookmarkMenuBridge::UpdateSubMenu(NSMenu* bookmark_menu) {
|
| void BookmarkMenuBridge::UpdateMenuInternal(NSMenu* bookmark_menu,
|
| bool is_submenu) {
|
| DCHECK(bookmark_menu);
|
| - if (menuIsValid_)
|
| + if (menu_is_valid_)
|
| return;
|
| BookmarkModel* model = GetBookmarkModel();
|
| if (!model || !model->IsLoaded())
|
| @@ -71,27 +84,31 @@ void BookmarkMenuBridge::UpdateMenuInternal(NSMenu* bookmark_menu,
|
|
|
| ClearBookmarkMenu(bookmark_menu);
|
|
|
| - // Add bookmark bar items, if any.
|
| - const BookmarkNode* barNode = model->bookmark_bar_node();
|
| - CHECK(barNode);
|
| - if (!barNode->empty()) {
|
| - [bookmark_menu addItem:[NSMenuItem separatorItem]];
|
| - AddNodeToMenu(barNode, bookmark_menu, !is_submenu);
|
| - }
|
| + if (!root_node_) {
|
| + // Add bookmark bar items, if any.
|
| + const BookmarkNode* bar_node = model->bookmark_bar_node();
|
| + CHECK(bar_node);
|
| + if (!bar_node->empty()) {
|
| + [bookmark_menu addItem:[NSMenuItem separatorItem]];
|
| + AddNodeToMenu(bar_node, bookmark_menu, !is_submenu);
|
| + }
|
|
|
| - // If the "Other Bookmarks" folder has any content, make a submenu for it and
|
| - // fill it in.
|
| - if (!model->other_node()->empty()) {
|
| - NSString* other_items_title =
|
| - l10n_util::GetNSString(IDS_BOOMARK_BAR_OTHER_FOLDER_NAME);
|
| - [bookmark_menu addItem:[NSMenuItem separatorItem]];
|
| - AddNodeAsSubmenu(bookmark_menu,
|
| - model->other_node(),
|
| - other_items_title,
|
| - !is_submenu);
|
| + // If the "Other Bookmarks" folder has any content, make a submenu for it
|
| + // and fill it in.
|
| + if (!model->other_node()->empty()) {
|
| + NSString* other_items_title =
|
| + l10n_util::GetNSString(IDS_BOOMARK_BAR_OTHER_FOLDER_NAME);
|
| + [bookmark_menu addItem:[NSMenuItem separatorItem]];
|
| + AddNodeAsSubmenu(bookmark_menu,
|
| + model->other_node(),
|
| + other_items_title,
|
| + !is_submenu);
|
| + }
|
| + } else {
|
| + AddNodeToMenu(root_node_, bookmark_menu, true);
|
| }
|
|
|
| - menuIsValid_ = true;
|
| + menu_is_valid_ = true;
|
| }
|
|
|
| void BookmarkMenuBridge::BookmarkModelBeingDeleted(BookmarkModel* model) {
|
|
|