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

Unified Diff: chrome/browser/ui/gtk/browser_toolbar_gtk.cc

Issue 12039058: content: convert zoom notifications to observer usage (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 10 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/ui/gtk/browser_toolbar_gtk.cc
diff --git a/chrome/browser/ui/gtk/browser_toolbar_gtk.cc b/chrome/browser/ui/gtk/browser_toolbar_gtk.cc
index 11e1b2b34b78916bd15475979e0b4f690ec2013a..45b45812f65af7a15506e458de7014c16933e74d 100644
--- a/chrome/browser/ui/gtk/browser_toolbar_gtk.cc
+++ b/chrome/browser/ui/gtk/browser_toolbar_gtk.cc
@@ -99,7 +99,9 @@ BrowserToolbarGtk::BrowserToolbarGtk(Browser* browser, BrowserWindowGtk* window)
model_(browser->toolbar_model()),
is_wrench_menu_model_valid_(true),
browser_(browser),
- window_(window) {
+ window_(window),
+ zoom_callback_(base::Bind(&BrowserToolbarGtk::OnZoomLevelChanged,
+ base::Unretained(this))) {
wrench_menu_model_.reset(new WrenchMenuModel(this, browser_, false, false));
chrome::AddCommandObserver(browser_, IDC_BACK, this);
@@ -124,6 +126,9 @@ BrowserToolbarGtk::~BrowserToolbarGtk() {
offscreen_entry_.Destroy();
wrench_menu_.reset();
+
+ HostZoomMap::GetForBrowserContext(
+ browser()->profile())->RemoveZoomLevelChangedCallback(zoom_callback_);
}
void BrowserToolbarGtk::Init(GtkWindow* top_level_window) {
@@ -241,9 +246,8 @@ void BrowserToolbarGtk::Init(GtkWindow* top_level_window) {
// The bookmark menu model needs to be able to force the wrench menu to close.
wrench_menu_model_->bookmark_sub_menu_model()->SetMenuGtk(wrench_menu_.get());
- registrar_.Add(this, content::NOTIFICATION_ZOOM_LEVEL_CHANGED,
- content::Source<HostZoomMap>(
- HostZoomMap::GetForBrowserContext(profile)));
+ HostZoomMap::GetForBrowserContext(
+ browser()->profile())->AddZoomLevelChangedCallback(zoom_callback_);
if (ShouldOnlyShowLocation()) {
gtk_widget_show(event_box_);
@@ -416,18 +420,6 @@ void BrowserToolbarGtk::Observe(int type,
} else if (type == chrome::NOTIFICATION_GLOBAL_ERRORS_CHANGED) {
is_wrench_menu_model_valid_ = false;
gtk_widget_queue_draw(wrench_menu_button_->widget());
- } else if (type == content::NOTIFICATION_ZOOM_LEVEL_CHANGED) {
- // Since BrowserToolbarGtk create a new |wrench_menu_model_| in
- // RebuildWrenchMenu(), the ordering of the observers of
- // NOTIFICATION_ZOOM_LEVEL_CHANGED can change, and result in subtle bugs
- // like http://crbug.com/118823. Rather than depending on the ordering
- // of the notification observers, always update the WrenchMenuModel before
- // updating the WrenchMenu.
- wrench_menu_model_->UpdateZoomControls();
-
- // If our zoom level changed, we need to tell the menu to update its state,
- // since the menu could still be open.
- wrench_menu_->UpdateMenu();
} else {
NOTREACHED();
}
@@ -449,6 +441,20 @@ bool BrowserToolbarGtk::IsWrenchMenuShowing() const {
// BrowserToolbarGtk, private --------------------------------------------------
+void BrowserToolbarGtk::OnZoomLevelChanged(const std::string& host) {
+ // Since BrowserToolbarGtk create a new |wrench_menu_model_| in
+ // RebuildWrenchMenu(), the ordering of the observers of HostZoomMap
+ // can change, and result in subtle bugs like http://crbug.com/118823.
+ // Rather than depending on the ordering of the observers, always update
+ // the WrenchMenuModel before updating the WrenchMenu.
+ wrench_menu_model_->UpdateZoomControls();
+
+ // If our zoom level changed, we need to tell the menu to update its state,
+ // since the menu could still be open.
+ wrench_menu_->UpdateMenu();
+}
+
+
void BrowserToolbarGtk::SetUpDragForHomeButton() {
if (!home_page_.IsManaged() && !home_page_is_new_tab_page_.IsManaged()) {
gtk_drag_dest_set(home_->widget(), GTK_DEST_DEFAULT_ALL,
« no previous file with comments | « chrome/browser/ui/gtk/browser_toolbar_gtk.h ('k') | chrome/browser/ui/gtk/location_bar_view_gtk_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698