Index: chrome/browser/ui/views/toolbar_view.cc |
diff --git a/chrome/browser/ui/views/toolbar_view.cc b/chrome/browser/ui/views/toolbar_view.cc |
index a22bccf37e2f545d1ff5672a946dead02c564520..540e603da6cddb7335e264bed1b53d95c3ced2c1 100644 |
--- a/chrome/browser/ui/views/toolbar_view.cc |
+++ b/chrome/browser/ui/views/toolbar_view.cc |
@@ -98,7 +98,8 @@ ToolbarView::ToolbarView(Browser* browser) |
browser_actions_(NULL), |
app_menu_(NULL), |
browser_(browser), |
- profiles_menu_contents_(NULL) { |
+ profiles_menu_contents_(NULL), |
+ is_wrench_menu_model_valid_(true) { |
set_id(VIEW_ID_TOOLBAR); |
browser_->command_updater()->AddCommandObserver(IDC_BACK, this); |
@@ -337,6 +338,11 @@ void ToolbarView::RunMenu(views::View* source, const gfx::Point& /* pt */) { |
DCHECK_EQ(VIEW_ID_APP_MENU, source->id()); |
wrench_menu_.reset(new WrenchMenu(browser_)); |
+ |
+ if (!is_wrench_menu_model_valid_) { |
sky
2011/10/07 19:40:17
Is this really enough? What happens if a global er
sail
2011/10/07 20:42:08
I believe if the bookmark model changes while the
|
+ wrench_menu_model_.reset(new WrenchMenuModel(this, browser_)); |
+ is_wrench_menu_model_valid_ = true; |
+ } |
wrench_menu_->Init(wrench_menu_model_.get()); |
FOR_EACH_OBSERVER(views::MenuListener, menu_listeners_, OnMenuOpened()); |
@@ -418,7 +424,10 @@ void ToolbarView::Observe(int type, |
} |
case chrome::NOTIFICATION_UPGRADE_RECOMMENDED: |
case chrome::NOTIFICATION_MODULE_INCOMPATIBILITY_BADGE_CHANGE: |
+ UpdateAppMenuBadge(); |
+ break; |
case chrome::NOTIFICATION_GLOBAL_ERRORS_CHANGED: |
+ is_wrench_menu_model_valid_ = false; |
UpdateAppMenuBadge(); |
break; |
default: |