Index: chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.cc |
diff --git a/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.cc b/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.cc |
index 893aee7f72b03105a89efd70e258118859c010f9..83c5b954b8c5bdee3082e7a066cc46abd2b79506 100644 |
--- a/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.cc |
+++ b/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.cc |
@@ -264,8 +264,8 @@ void BookmarkBarGtk::Init(Profile* profile) { |
g_signal_connect(bookmark_toolbar_.get(), "drag-data-received", |
G_CALLBACK(&OnDragReceivedThunk), this); |
- GtkWidget* vseparator = theme_service_->CreateToolbarSeparator(); |
- gtk_box_pack_start(GTK_BOX(bookmark_hbox_), vseparator, |
+ other_bookmarks_separator_ = theme_service_->CreateToolbarSeparator(); |
+ gtk_box_pack_start(GTK_BOX(bookmark_hbox_), other_bookmarks_separator_, |
FALSE, FALSE, 0); |
// We pack the button manually (rather than using gtk_button_set_*) so that |
@@ -539,6 +539,15 @@ void BookmarkBarGtk::SetChevronState() { |
gtk_widget_show_all(overflow_button_); |
} |
+void BookmarkBarGtk::UpdateOtherBookmarksVisibility() { |
+ bool has_other_children = !model_->other_node()->empty(); |
+ if (has_other_children == gtk_widget_get_visible(other_bookmarks_button_)) |
+ return; |
+ |
+ gtk_widget_set_visible(other_bookmarks_button_, has_other_children); |
+ gtk_widget_set_visible(other_bookmarks_separator_, has_other_children); |
+} |
+ |
void BookmarkBarGtk::RemoveAllBookmarkButtons() { |
gtk_util::RemoveAllChildren(bookmark_toolbar_.get()); |
menu_bar_helper_.Clear(); |
@@ -828,6 +837,7 @@ void BookmarkBarGtk::Loaded(BookmarkModel* model) { |
if (!instructions_) |
return; |
+ UpdateOtherBookmarksVisibility(); |
RemoveAllBookmarkButtons(); |
CreateAllBookmarkButtons(); |
} |
@@ -869,6 +879,7 @@ void BookmarkBarGtk::BookmarkNodeAdded(BookmarkModel* model, |
if (node->is_folder()) |
menu_bar_helper_.Add(gtk_bin_get_child(GTK_BIN(item))); |
+ UpdateOtherBookmarksVisibility(); |
SetInstructionState(); |
SetChevronState(); |
@@ -892,6 +903,7 @@ void BookmarkBarGtk::BookmarkNodeRemoved(BookmarkModel* model, |
gtk_container_remove(GTK_CONTAINER(bookmark_toolbar_.get()), |
to_remove); |
+ UpdateOtherBookmarksVisibility(); |
SetInstructionState(); |
SetChevronState(); |
} |