| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/views/bookmark_menu_controller_views.h" | 5 #include "chrome/browser/views/bookmark_menu_controller_views.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "app/os_exchange_data.h" | 8 #include "app/os_exchange_data.h" |
| 9 #include "app/resource_bundle.h" | 9 #include "app/resource_bundle.h" |
| 10 #include "base/stl_util-inl.h" | 10 #include "base/stl_util-inl.h" |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 int start_index; | 249 int start_index; |
| 250 const BookmarkNode* node = | 250 const BookmarkNode* node = |
| 251 bookmark_bar_->GetNodeForButtonAt(bookmark_bar_loc, &start_index); | 251 bookmark_bar_->GetNodeForButtonAt(bookmark_bar_loc, &start_index); |
| 252 if (!node || !node->is_folder()) | 252 if (!node || !node->is_folder()) |
| 253 return NULL; | 253 return NULL; |
| 254 | 254 |
| 255 MenuItemView* alt_menu = node_to_menu_map_[node]; | 255 MenuItemView* alt_menu = node_to_menu_map_[node]; |
| 256 if (!alt_menu) | 256 if (!alt_menu) |
| 257 alt_menu = CreateMenu(node, start_index); | 257 alt_menu = CreateMenu(node, start_index); |
| 258 | 258 |
| 259 if (alt_menu) | 259 menu_ = alt_menu; |
| 260 menu_ = alt_menu; | |
| 261 | 260 |
| 262 *button = bookmark_bar_->GetMenuButtonForNode(node); | 261 *button = bookmark_bar_->GetMenuButtonForNode(node); |
| 263 bookmark_bar_->GetAnchorPositionAndStartIndexForButton( | 262 bookmark_bar_->GetAnchorPositionAndStartIndexForButton( |
| 264 *button, anchor, &start_index); | 263 *button, anchor, &start_index); |
| 265 *has_mnemonics = false; | 264 *has_mnemonics = false; |
| 266 return alt_menu; | 265 return alt_menu; |
| 267 } | 266 } |
| 268 | 267 |
| 269 void BookmarkMenuController::BookmarkModelChanged() { | 268 void BookmarkMenuController::BookmarkModelChanged() { |
| 270 menu_->Cancel(); | 269 menu_->Cancel(); |
| 271 } | 270 } |
| 272 | 271 |
| 273 void BookmarkMenuController::BookmarkNodeFavIconLoaded( | 272 void BookmarkMenuController::BookmarkNodeFavIconLoaded( |
| 274 BookmarkModel* model, const BookmarkNode* node) { | 273 BookmarkModel* model, const BookmarkNode* node) { |
| 275 if (node_to_menu_id_map_.find(node) != node_to_menu_id_map_.end()) | 274 std::map<const BookmarkNode*, int>::iterator menu_pair = |
| 276 menu_->SetIcon(model->GetFavIcon(node), node_to_menu_id_map_[node]); | 275 node_to_menu_id_map_.find(node); |
| 276 if (menu_pair == node_to_menu_id_map_.end()) |
| 277 return; // We're not showing a menu item for the node. |
| 278 |
| 279 // Iterate through the menus looking for the menu containing node. |
| 280 for (NodeToMenuMap::iterator i = node_to_menu_map_.begin(); |
| 281 i != node_to_menu_map_.end(); ++i) { |
| 282 MenuItemView* menu_item = i->second->GetMenuItemByID(menu_pair->second); |
| 283 if (menu_item) { |
| 284 menu_item->SetIcon(model->GetFavIcon(node)); |
| 285 return; |
| 286 } |
| 287 } |
| 277 } | 288 } |
| 278 | 289 |
| 279 MenuItemView* BookmarkMenuController::CreateMenu(const BookmarkNode* parent, | 290 MenuItemView* BookmarkMenuController::CreateMenu(const BookmarkNode* parent, |
| 280 int start_child_index) { | 291 int start_child_index) { |
| 281 MenuItemView* menu = new MenuItemView(this); | 292 MenuItemView* menu = new MenuItemView(this); |
| 282 menu->SetCommand(next_menu_id_++); | 293 menu->SetCommand(next_menu_id_++); |
| 283 menu_id_to_node_map_[menu->GetCommand()] = parent; | 294 menu_id_to_node_map_[menu->GetCommand()] = parent; |
| 284 menu->set_has_icons(true); | 295 menu->set_has_icons(true); |
| 285 BuildMenu(parent, start_child_index, menu, &next_menu_id_); | 296 BuildMenu(parent, start_child_index, menu, &next_menu_id_); |
| 286 if (show_other_folder_) | 297 if (show_other_folder_) |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 menu_id_to_node_map_[id] = node; | 344 menu_id_to_node_map_[id] = node; |
| 334 } | 345 } |
| 335 } | 346 } |
| 336 | 347 |
| 337 BookmarkMenuController::~BookmarkMenuController() { | 348 BookmarkMenuController::~BookmarkMenuController() { |
| 338 profile_->GetBookmarkModel()->RemoveObserver(this); | 349 profile_->GetBookmarkModel()->RemoveObserver(this); |
| 339 if (observer_) | 350 if (observer_) |
| 340 observer_->BookmarkMenuDeleted(this); | 351 observer_->BookmarkMenuDeleted(this); |
| 341 STLDeleteValues(&node_to_menu_map_); | 352 STLDeleteValues(&node_to_menu_map_); |
| 342 } | 353 } |
| OLD | NEW |