summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/gtk/status_bubble_gtk.cc
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-04 01:57:47 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-04 01:57:47 +0000
commit8a0b3b0ed44bf64d38fd1065a1fa3dcf9f44d729 (patch)
treea8ca83637e50d9fdbea3780d86d24725f4fd8f1d /chrome/browser/ui/gtk/status_bubble_gtk.cc
parent2fca3cd369dc0847cc4fbf9bdd65428c640f8669 (diff)
downloadchromium_src-8a0b3b0ed44bf64d38fd1065a1fa3dcf9f44d729.zip
chromium_src-8a0b3b0ed44bf64d38fd1065a1fa3dcf9f44d729.tar.gz
chromium_src-8a0b3b0ed44bf64d38fd1065a1fa3dcf9f44d729.tar.bz2
gtk - Prevent crash on shutdown when animating status bubble and download item
BUG=68888 TEST=none Review URL: http://codereview.chromium.org/6610010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76860 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/gtk/status_bubble_gtk.cc')
-rw-r--r--chrome/browser/ui/gtk/status_bubble_gtk.cc20
1 files changed, 10 insertions, 10 deletions
diff --git a/chrome/browser/ui/gtk/status_bubble_gtk.cc b/chrome/browser/ui/gtk/status_bubble_gtk.cc
index 7f2dccb..b8a3980 100644
--- a/chrome/browser/ui/gtk/status_bubble_gtk.cc
+++ b/chrome/browser/ui/gtk/status_bubble_gtk.cc
@@ -40,7 +40,6 @@ const int kMousePadding = 20;
StatusBubbleGtk::StatusBubbleGtk(Profile* profile)
: theme_provider_(GtkThemeProvider::GetFrom(profile)),
padding_(NULL),
- label_(NULL),
flip_horizontally_(false),
y_offset_(0),
download_shelf_is_visible_(false),
@@ -55,6 +54,7 @@ StatusBubbleGtk::StatusBubbleGtk(Profile* profile)
}
StatusBubbleGtk::~StatusBubbleGtk() {
+ label_.Destroy();
container_.Destroy();
}
@@ -134,9 +134,9 @@ void StatusBubbleGtk::SetStatusTextTo(const std::string& status_utf8) {
hide_timer_.Start(base::TimeDelta::FromMilliseconds(kHideDelay),
this, &StatusBubbleGtk::Hide);
} else {
- gtk_label_set_text(GTK_LABEL(label_), status_utf8.c_str());
+ gtk_label_set_text(GTK_LABEL(label_.get()), status_utf8.c_str());
GtkRequisition req;
- gtk_widget_size_request(label_, &req);
+ gtk_widget_size_request(label_.get(), &req);
desired_width_ = req.width;
UpdateLabelSizeRequest();
@@ -245,14 +245,14 @@ void StatusBubbleGtk::Observe(NotificationType type,
void StatusBubbleGtk::InitWidgets() {
bool ltr = !base::i18n::IsRTL();
- label_ = gtk_label_new(NULL);
+ label_.Own(gtk_label_new(NULL));
padding_ = gtk_alignment_new(0, 0, 1, 1);
gtk_alignment_set_padding(GTK_ALIGNMENT(padding_),
kInternalTopBottomPadding, kInternalTopBottomPadding,
kInternalLeftRightPadding + (ltr ? 0 : kCornerSize),
kInternalLeftRightPadding + (ltr ? kCornerSize : 0));
- gtk_container_add(GTK_CONTAINER(padding_), label_);
+ gtk_container_add(GTK_CONTAINER(padding_), label_.get());
gtk_widget_show_all(padding_);
container_.Own(gtk_event_box_new());
@@ -279,7 +279,7 @@ void StatusBubbleGtk::InitWidgets() {
void StatusBubbleGtk::UserChangedTheme() {
if (theme_provider_->UseGtkTheme()) {
- gtk_widget_modify_fg(label_, GTK_STATE_NORMAL, NULL);
+ gtk_widget_modify_fg(label_.get(), GTK_STATE_NORMAL, NULL);
gtk_widget_modify_bg(container_.get(), GTK_STATE_NORMAL, NULL);
} else {
// TODO(erg): This is the closest to "text that will look good on a
@@ -287,7 +287,7 @@ void StatusBubbleGtk::UserChangedTheme() {
// there will be a better color to pick.
GdkColor bookmark_text =
theme_provider_->GetGdkColor(BrowserThemeProvider::COLOR_BOOKMARK_TEXT);
- gtk_widget_modify_fg(label_, GTK_STATE_NORMAL, &bookmark_text);
+ gtk_widget_modify_fg(label_.get(), GTK_STATE_NORMAL, &bookmark_text);
GdkColor toolbar_color =
theme_provider_->GetGdkColor(BrowserThemeProvider::COLOR_TOOLBAR);
@@ -324,7 +324,7 @@ void StatusBubbleGtk::SetFlipHorizontally(bool flip_horizontally) {
}
void StatusBubbleGtk::ExpandURL() {
- start_width_ = label_->allocation.width;
+ start_width_ = label_.get()->allocation.width;
expand_animation_.reset(new ui::SlideAnimation(this));
expand_animation_->SetTweenType(ui::Tween::LINEAR);
expand_animation_->Show();
@@ -334,13 +334,13 @@ void StatusBubbleGtk::ExpandURL() {
void StatusBubbleGtk::UpdateLabelSizeRequest() {
if (!expanded() || !expand_animation_->is_animating()) {
- gtk_widget_set_size_request(label_, -1, -1);
+ gtk_widget_set_size_request(label_.get(), -1, -1);
return;
}
int new_width = start_width_ +
(desired_width_ - start_width_) * expand_animation_->GetCurrentValue();
- gtk_widget_set_size_request(label_, new_width, -1);
+ gtk_widget_set_size_request(label_.get(), new_width, -1);
}
// See http://crbug.com/68897 for why we have to handle this event.