diff options
author | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-10 00:05:34 +0000 |
---|---|---|
committer | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-10 00:05:34 +0000 |
commit | e3149dbeafdcb286e24aa676b125eb9b0134ab11 (patch) | |
tree | b2c3f22fa4267ec71a9952c8fbcda784a034c0ac /chrome/browser/gtk/location_bar_view_gtk.cc | |
parent | ce4b6a9dbb6ac14810294205185d385f066457fc (diff) | |
download | chromium_src-e3149dbeafdcb286e24aa676b125eb9b0134ab11.zip chromium_src-e3149dbeafdcb286e24aa676b125eb9b0134ab11.tar.gz chromium_src-e3149dbeafdcb286e24aa676b125eb9b0134ab11.tar.bz2 |
Linux: Make page_action_hbox_ an OwnedWidget.
UpdatePageActions() can get called after the gtk widgets have been destroyed.
BUG=29757
TEST=see bug
Review URL: http://codereview.chromium.org/476007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34207 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk/location_bar_view_gtk.cc')
-rw-r--r-- | chrome/browser/gtk/location_bar_view_gtk.cc | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/chrome/browser/gtk/location_bar_view_gtk.cc b/chrome/browser/gtk/location_bar_view_gtk.cc index ec4b1eb..5596267 100644 --- a/chrome/browser/gtk/location_bar_view_gtk.cc +++ b/chrome/browser/gtk/location_bar_view_gtk.cc @@ -136,6 +136,7 @@ LocationBarViewGtk::LocationBarViewGtk( LocationBarViewGtk::~LocationBarViewGtk() { // All of our widgets should have be children of / owned by the alignment. hbox_.Destroy(); + page_action_hbox_.Destroy(); } void LocationBarViewGtk::Init(bool popup_window_mode) { @@ -254,10 +255,11 @@ void LocationBarViewGtk::Init(bool popup_window_mode) { gtk_box_pack_end(GTK_BOX(hbox_.get()), security_icon_event_box_, FALSE, FALSE, 0); - page_action_hbox_ = gtk_hbox_new(FALSE, kInnerPadding); - gtk_widget_set_name(page_action_hbox_, + page_action_hbox_.Own(gtk_hbox_new(FALSE, kInnerPadding)); + gtk_widget_set_name(page_action_hbox_.get(), "chrome-page-action-hbox"); - gtk_box_pack_end(GTK_BOX(hbox_.get()), page_action_hbox_, FALSE, FALSE, 0); + gtk_box_pack_end(GTK_BOX(hbox_.get()), page_action_hbox_.get(), + FALSE, FALSE, 0); registrar_.Add(this, NotificationType::BROWSER_THEME_CHANGED, @@ -426,7 +428,7 @@ void LocationBarViewGtk::UpdatePageActions() { for (size_t i = 0; i < page_actions.size(); ++i) { page_action_views_.push_back( new PageActionViewGtk(this, profile_, page_actions[i])); - gtk_box_pack_end(GTK_BOX(page_action_hbox_), + gtk_box_pack_end(GTK_BOX(page_action_hbox_.get()), page_action_views_[i]->widget(), FALSE, FALSE, 0); } } @@ -442,9 +444,9 @@ void LocationBarViewGtk::UpdatePageActions() { // If there are no visible page actions, hide the hbox too, so that it does // not affect the padding in the location bar. if (PageActionVisibleCount()) - gtk_widget_show(page_action_hbox_); + gtk_widget_show(page_action_hbox_.get()); else - gtk_widget_hide(page_action_hbox_); + gtk_widget_hide(page_action_hbox_.get()); } void LocationBarViewGtk::InvalidatePageActions() { @@ -461,8 +463,8 @@ void LocationBarViewGtk::Revert() { int LocationBarViewGtk::PageActionVisibleCount() { int count = 0; - gtk_container_foreach(GTK_CONTAINER(page_action_hbox_), CountVisibleWidgets, - &count); + gtk_container_foreach(GTK_CONTAINER(page_action_hbox_.get()), + CountVisibleWidgets, &count); return count; } |