summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/location_bar_view_gtk.cc
diff options
context:
space:
mode:
authormattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-10 00:05:34 +0000
committermattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-10 00:05:34 +0000
commite3149dbeafdcb286e24aa676b125eb9b0134ab11 (patch)
treeb2c3f22fa4267ec71a9952c8fbcda784a034c0ac /chrome/browser/gtk/location_bar_view_gtk.cc
parentce4b6a9dbb6ac14810294205185d385f066457fc (diff)
downloadchromium_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.cc18
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;
}