Index: chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc |
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc b/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc |
index e103b49eb380dcda4bb08f8efaea3d014c035122..2fa2125625953c14c7827f201e6ee12630f670bc 100644 |
--- a/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc |
+++ b/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc |
@@ -41,6 +41,7 @@ BookmarkMenuDelegate::BookmarkMenuDelegate(Profile* profile, |
parent_(parent), |
menu_(NULL), |
for_drop_(false), |
+ parent_menu_item_(NULL), |
next_menu_id_(first_menu_id), |
real_delegate_(NULL), |
is_mutating_model_(false) { |
@@ -59,6 +60,7 @@ void BookmarkMenuDelegate::Init(views::MenuDelegate* real_delegate, |
profile_->GetBookmarkModel()->AddObserver(this); |
real_delegate_ = real_delegate; |
if (parent) { |
+ parent_menu_item_ = parent; |
BuildMenu(node, start_child_index, parent, &next_menu_id_); |
if (show_options == SHOW_OTHER_FOLDER) |
BuildOtherFolderMenu(parent, &next_menu_id_); |
@@ -69,6 +71,7 @@ void BookmarkMenuDelegate::Init(views::MenuDelegate* real_delegate, |
void BookmarkMenuDelegate::SetActiveMenu(const BookmarkNode* node, |
int start_index) { |
+ DCHECK(!parent_menu_item_); |
if (!node_to_menu_map_[node]) |
CreateMenu(node, start_index, HIDE_OTHER_FOLDER); |
menu_ = node_to_menu_map_[node]; |
@@ -279,6 +282,13 @@ void BookmarkMenuDelegate::BookmarkNodeFaviconChanged( |
return; |
} |
} |
+ |
+ if (parent_menu_item_) { |
+ MenuItemView* menu_item = parent_menu_item_->GetMenuItemByID( |
+ menu_pair->second); |
+ if (menu_item) |
+ menu_item->SetIcon(model->GetFavicon(node)); |
+ } |
} |
void BookmarkMenuDelegate::WillRemoveBookmarks( |
@@ -366,7 +376,8 @@ MenuItemView* BookmarkMenuDelegate::GetMenuByID(int id) { |
if (menu) |
return menu; |
} |
- return NULL; |
+ |
+ return parent_menu_item_ ? parent_menu_item_->GetMenuItemByID(id) : NULL; |
} |
void BookmarkMenuDelegate::WillRemoveBookmarksImpl( |