diff options
-rw-r--r-- | chrome/browser/gtk/bookmark_bar_gtk.cc | 33 | ||||
-rw-r--r-- | chrome/browser/gtk/bookmark_bar_gtk.h | 9 |
2 files changed, 24 insertions, 18 deletions
diff --git a/chrome/browser/gtk/bookmark_bar_gtk.cc b/chrome/browser/gtk/bookmark_bar_gtk.cc index dcfda55..fc9f4d8 100644 --- a/chrome/browser/gtk/bookmark_bar_gtk.cc +++ b/chrome/browser/gtk/bookmark_bar_gtk.cc @@ -75,7 +75,7 @@ BookmarkBarGtk::~BookmarkBarGtk() { RemoveAllBookmarkButtons(); bookmark_toolbar_.Destroy(); - bookmark_hbox_.Destroy(); + event_box_.Destroy(); } void BookmarkBarGtk::SetProfile(Profile* profile) { @@ -106,7 +106,10 @@ void BookmarkBarGtk::SetPageNavigator(PageNavigator* navigator) { } void BookmarkBarGtk::Init(Profile* profile) { - bookmark_hbox_.Own(gtk_hbox_new(FALSE, 0)); + event_box_.Own(gtk_event_box_new()); + + bookmark_hbox_ = gtk_hbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(event_box_.get()), bookmark_hbox_); instructions_ = gtk_alignment_new(0.0, 0.0, 1.0, 1.0); gtk_alignment_set_padding(GTK_ALIGNMENT(instructions_), 0, 0, @@ -118,18 +121,18 @@ void BookmarkBarGtk::Init(Profile* profile) { gtk_widget_modify_fg(instructions_label, GTK_STATE_NORMAL, &kInstructionsColor); gtk_container_add(GTK_CONTAINER(instructions_), instructions_label); - gtk_box_pack_start(GTK_BOX(bookmark_hbox_.get()), instructions_, + gtk_box_pack_start(GTK_BOX(bookmark_hbox_), instructions_, FALSE, FALSE, 0); - gtk_widget_set_app_paintable(bookmark_hbox_.get(), TRUE); - g_signal_connect(G_OBJECT(bookmark_hbox_.get()), "expose-event", + gtk_widget_set_app_paintable(bookmark_hbox_, TRUE); + g_signal_connect(G_OBJECT(bookmark_hbox_), "expose-event", G_CALLBACK(&OnHBoxExpose), this); bookmark_toolbar_.Own(gtk_toolbar_new()); gtk_widget_set_app_paintable(bookmark_toolbar_.get(), TRUE); g_signal_connect(G_OBJECT(bookmark_toolbar_.get()), "expose-event", G_CALLBACK(&OnToolbarExpose), this); - gtk_box_pack_start(GTK_BOX(bookmark_hbox_.get()), bookmark_toolbar_.get(), + gtk_box_pack_start(GTK_BOX(bookmark_hbox_), bookmark_toolbar_.get(), TRUE, TRUE, 0); gtk_drag_dest_set(bookmark_toolbar_.get(), GTK_DEST_DEFAULT_DROP, @@ -147,28 +150,28 @@ void BookmarkBarGtk::Init(Profile* profile) { g_signal_connect(bookmark_toolbar_.get(), "button-press-event", G_CALLBACK(&OnButtonPressed), this); - gtk_box_pack_start(GTK_BOX(bookmark_hbox_.get()), gtk_vseparator_new(), + gtk_box_pack_start(GTK_BOX(bookmark_hbox_), gtk_vseparator_new(), FALSE, FALSE, 0); // We pack the button manually (rather than using gtk_button_set_*) so that // we can have finer control over its label. other_bookmarks_button_ = theme_provider_->BuildChromeButton(); ConnectFolderButtonEvents(other_bookmarks_button_); - gtk_box_pack_start(GTK_BOX(bookmark_hbox_.get()), other_bookmarks_button_, + gtk_box_pack_start(GTK_BOX(bookmark_hbox_), other_bookmarks_button_, FALSE, FALSE, 0); // Set the current theme state for all the buttons. - gtk_widget_set_size_request(bookmark_hbox_.get(), -1, 0); + gtk_widget_set_size_request(event_box_.get(), -1, 0); slide_animation_.reset(new SlideAnimation(this)); } void BookmarkBarGtk::AddBookmarkbarToBox(GtkWidget* box) { - gtk_box_pack_start(GTK_BOX(box), bookmark_hbox_.get(), FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(box), event_box_.get(), FALSE, FALSE, 0); } void BookmarkBarGtk::Show(bool animate) { - gtk_widget_show_all(bookmark_hbox_.get()); + gtk_widget_show_all(event_box_.get()); if (animate) { slide_animation_->Show(); } else { @@ -190,14 +193,14 @@ void BookmarkBarGtk::Hide(bool animate) { if (slide_animation_->IsShowing() && animate) { slide_animation_->Hide(); } else { - gtk_widget_hide(bookmark_hbox_.get()); + gtk_widget_hide(event_box_.get()); slide_animation_->Reset(0); AnimationProgressed(slide_animation_.get()); } } int BookmarkBarGtk::GetHeight() { - return bookmark_hbox_->allocation.height; + return event_box_->allocation.height; } bool BookmarkBarGtk::IsClosing() { @@ -345,7 +348,7 @@ bool BookmarkBarGtk::IsAlwaysShown() { void BookmarkBarGtk::AnimationProgressed(const Animation* animation) { DCHECK_EQ(animation, slide_animation_.get()); - gtk_widget_set_size_request(bookmark_hbox_.get(), -1, + gtk_widget_set_size_request(event_box_.get(), -1, animation->GetCurrentValue() * kBookmarkBarHeight); } @@ -354,7 +357,7 @@ void BookmarkBarGtk::AnimationEnded(const Animation* animation) { DCHECK_EQ(animation, slide_animation_.get()); if (!slide_animation_->IsShowing()) - gtk_widget_hide(bookmark_hbox_.get()); + gtk_widget_hide(event_box_.get()); } void BookmarkBarGtk::Observe(NotificationType type, diff --git a/chrome/browser/gtk/bookmark_bar_gtk.h b/chrome/browser/gtk/bookmark_bar_gtk.h index 102a646..0c2aa39 100644 --- a/chrome/browser/gtk/bookmark_bar_gtk.h +++ b/chrome/browser/gtk/bookmark_bar_gtk.h @@ -209,9 +209,12 @@ class BookmarkBarGtk : public AnimationDelegate, // shown. This is owned by the Profile. BookmarkModel* model_; - // Container that has all the individual members of - // |current_bookmark_buttons_| as children. - OwnedWidgetGtk bookmark_hbox_; + // Contains |bookmark_hbox_|. Event box exists to prevent leakage of + // background color from the toplevel application window's GDK window. + OwnedWidgetGtk event_box_; + + // Used to position all children. + GtkWidget* bookmark_hbox_; // A GtkLabel to display when there are no bookmark buttons to display. GtkWidget* instructions_; |