Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(171)

Side by Side Diff: chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.cc

Issue 7312014: GTK: Hide the "Other Bookmarks" button when there are no bookmarks there. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.h" 5 #include "chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 gtk_drag_dest_set(bookmark_toolbar_.get(), GTK_DEST_DEFAULT_DROP, 257 gtk_drag_dest_set(bookmark_toolbar_.get(), GTK_DEST_DEFAULT_DROP,
258 NULL, 0, kDragAction); 258 NULL, 0, kDragAction);
259 ui::SetDestTargetList(bookmark_toolbar_.get(), kDestTargetList); 259 ui::SetDestTargetList(bookmark_toolbar_.get(), kDestTargetList);
260 g_signal_connect(bookmark_toolbar_.get(), "drag-motion", 260 g_signal_connect(bookmark_toolbar_.get(), "drag-motion",
261 G_CALLBACK(&OnToolbarDragMotionThunk), this); 261 G_CALLBACK(&OnToolbarDragMotionThunk), this);
262 g_signal_connect(bookmark_toolbar_.get(), "drag-leave", 262 g_signal_connect(bookmark_toolbar_.get(), "drag-leave",
263 G_CALLBACK(&OnDragLeaveThunk), this); 263 G_CALLBACK(&OnDragLeaveThunk), this);
264 g_signal_connect(bookmark_toolbar_.get(), "drag-data-received", 264 g_signal_connect(bookmark_toolbar_.get(), "drag-data-received",
265 G_CALLBACK(&OnDragReceivedThunk), this); 265 G_CALLBACK(&OnDragReceivedThunk), this);
266 266
267 GtkWidget* vseparator = theme_service_->CreateToolbarSeparator(); 267 other_bookmarks_separator_ = theme_service_->CreateToolbarSeparator();
268 gtk_box_pack_start(GTK_BOX(bookmark_hbox_), vseparator, 268 gtk_box_pack_start(GTK_BOX(bookmark_hbox_), other_bookmarks_separator_,
269 FALSE, FALSE, 0); 269 FALSE, FALSE, 0);
270 270
271 // We pack the button manually (rather than using gtk_button_set_*) so that 271 // We pack the button manually (rather than using gtk_button_set_*) so that
272 // we can have finer control over its label. 272 // we can have finer control over its label.
273 other_bookmarks_button_ = theme_service_->BuildChromeButton(); 273 other_bookmarks_button_ = theme_service_->BuildChromeButton();
274 ConnectFolderButtonEvents(other_bookmarks_button_, false); 274 ConnectFolderButtonEvents(other_bookmarks_button_, false);
275 GtkWidget* other_padding = gtk_alignment_new(0, 0, 1, 1); 275 GtkWidget* other_padding = gtk_alignment_new(0, 0, 1, 1);
276 gtk_alignment_set_padding(GTK_ALIGNMENT(other_padding), 276 gtk_alignment_set_padding(GTK_ALIGNMENT(other_padding),
277 kOtherBookmarksPaddingVertical, 277 kOtherBookmarksPaddingVertical,
278 kOtherBookmarksPaddingVertical, 278 kOtherBookmarksPaddingVertical,
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 if (GTK_WIDGET_VISIBLE(overflow_button_)) 532 if (GTK_WIDGET_VISIBLE(overflow_button_))
533 extra_space = overflow_button_->allocation.width; 533 extra_space = overflow_button_->allocation.width;
534 534
535 int overflow_idx = GetFirstHiddenBookmark(extra_space, NULL); 535 int overflow_idx = GetFirstHiddenBookmark(extra_space, NULL);
536 if (overflow_idx == -1) 536 if (overflow_idx == -1)
537 gtk_widget_hide(overflow_button_); 537 gtk_widget_hide(overflow_button_);
538 else 538 else
539 gtk_widget_show_all(overflow_button_); 539 gtk_widget_show_all(overflow_button_);
540 } 540 }
541 541
542 void BookmarkBarGtk::UpdateOtherBookmarksVisibility() {
543 bool has_other_children = !model_->other_node()->empty();
544 if (has_other_children == gtk_widget_get_visible(other_bookmarks_button_))
545 return;
546
547 gtk_widget_set_visible(other_bookmarks_button_, has_other_children);
548 gtk_widget_set_visible(other_bookmarks_separator_, has_other_children);
549 }
550
542 void BookmarkBarGtk::RemoveAllBookmarkButtons() { 551 void BookmarkBarGtk::RemoveAllBookmarkButtons() {
543 gtk_util::RemoveAllChildren(bookmark_toolbar_.get()); 552 gtk_util::RemoveAllChildren(bookmark_toolbar_.get());
544 menu_bar_helper_.Clear(); 553 menu_bar_helper_.Clear();
545 menu_bar_helper_.Add(other_bookmarks_button_); 554 menu_bar_helper_.Add(other_bookmarks_button_);
546 menu_bar_helper_.Add(overflow_button_); 555 menu_bar_helper_.Add(overflow_button_);
547 } 556 }
548 557
549 int BookmarkBarGtk::GetBookmarkButtonCount() { 558 int BookmarkBarGtk::GetBookmarkButtonCount() {
550 GList* children = gtk_container_get_children( 559 GList* children = gtk_container_get_children(
551 GTK_CONTAINER(bookmark_toolbar_.get())); 560 GTK_CONTAINER(bookmark_toolbar_.get()));
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 gtk_toolbar_set_drop_highlight_item(GTK_TOOLBAR(bookmark_toolbar_.get()), 830 gtk_toolbar_set_drop_highlight_item(GTK_TOOLBAR(bookmark_toolbar_.get()),
822 NULL, 0); 831 NULL, 0);
823 } 832 }
824 833
825 void BookmarkBarGtk::Loaded(BookmarkModel* model) { 834 void BookmarkBarGtk::Loaded(BookmarkModel* model) {
826 // If |instructions_| has been nulled, we are in the middle of browser 835 // If |instructions_| has been nulled, we are in the middle of browser
827 // shutdown. Do nothing. 836 // shutdown. Do nothing.
828 if (!instructions_) 837 if (!instructions_)
829 return; 838 return;
830 839
840 UpdateOtherBookmarksVisibility();
831 RemoveAllBookmarkButtons(); 841 RemoveAllBookmarkButtons();
832 CreateAllBookmarkButtons(); 842 CreateAllBookmarkButtons();
833 } 843 }
834 844
835 void BookmarkBarGtk::BookmarkModelBeingDeleted(BookmarkModel* model) { 845 void BookmarkBarGtk::BookmarkModelBeingDeleted(BookmarkModel* model) {
836 // The bookmark model should never be deleted before us. This code exists 846 // The bookmark model should never be deleted before us. This code exists
837 // to check for regressions in shutdown code and not crash. 847 // to check for regressions in shutdown code and not crash.
838 if (!browser_shutdown::ShuttingDownWithoutClosingBrowsers()) 848 if (!browser_shutdown::ShuttingDownWithoutClosingBrowsers())
839 NOTREACHED(); 849 NOTREACHED();
840 850
(...skipping 21 matching lines...) Expand all
862 return; 872 return;
863 } 873 }
864 DCHECK(index >= 0 && index <= GetBookmarkButtonCount()); 874 DCHECK(index >= 0 && index <= GetBookmarkButtonCount());
865 875
866 GtkToolItem* item = CreateBookmarkToolItem(node); 876 GtkToolItem* item = CreateBookmarkToolItem(node);
867 gtk_toolbar_insert(GTK_TOOLBAR(bookmark_toolbar_.get()), 877 gtk_toolbar_insert(GTK_TOOLBAR(bookmark_toolbar_.get()),
868 item, index); 878 item, index);
869 if (node->is_folder()) 879 if (node->is_folder())
870 menu_bar_helper_.Add(gtk_bin_get_child(GTK_BIN(item))); 880 menu_bar_helper_.Add(gtk_bin_get_child(GTK_BIN(item)));
871 881
882 UpdateOtherBookmarksVisibility();
872 SetInstructionState(); 883 SetInstructionState();
873 SetChevronState(); 884 SetChevronState();
874 885
875 StartThrobbingAfterAllocation(GTK_WIDGET(item)); 886 StartThrobbingAfterAllocation(GTK_WIDGET(item));
876 } 887 }
877 888
878 void BookmarkBarGtk::BookmarkNodeRemoved(BookmarkModel* model, 889 void BookmarkBarGtk::BookmarkNodeRemoved(BookmarkModel* model,
879 const BookmarkNode* parent, 890 const BookmarkNode* parent,
880 int old_index, 891 int old_index,
881 const BookmarkNode* node) { 892 const BookmarkNode* node) {
882 if (parent != model_->GetBookmarkBarNode()) { 893 if (parent != model_->GetBookmarkBarNode()) {
883 // We only care about nodes on the bookmark bar. 894 // We only care about nodes on the bookmark bar.
884 return; 895 return;
885 } 896 }
886 DCHECK(old_index >= 0 && old_index < GetBookmarkButtonCount()); 897 DCHECK(old_index >= 0 && old_index < GetBookmarkButtonCount());
887 898
888 GtkWidget* to_remove = GTK_WIDGET(gtk_toolbar_get_nth_item( 899 GtkWidget* to_remove = GTK_WIDGET(gtk_toolbar_get_nth_item(
889 GTK_TOOLBAR(bookmark_toolbar_.get()), old_index)); 900 GTK_TOOLBAR(bookmark_toolbar_.get()), old_index));
890 if (node->is_folder()) 901 if (node->is_folder())
891 menu_bar_helper_.Remove(gtk_bin_get_child(GTK_BIN(to_remove))); 902 menu_bar_helper_.Remove(gtk_bin_get_child(GTK_BIN(to_remove)));
892 gtk_container_remove(GTK_CONTAINER(bookmark_toolbar_.get()), 903 gtk_container_remove(GTK_CONTAINER(bookmark_toolbar_.get()),
893 to_remove); 904 to_remove);
894 905
906 UpdateOtherBookmarksVisibility();
895 SetInstructionState(); 907 SetInstructionState();
896 SetChevronState(); 908 SetChevronState();
897 } 909 }
898 910
899 void BookmarkBarGtk::BookmarkNodeChanged(BookmarkModel* model, 911 void BookmarkBarGtk::BookmarkNodeChanged(BookmarkModel* model,
900 const BookmarkNode* node) { 912 const BookmarkNode* node) {
901 if (node->parent() != model_->GetBookmarkBarNode()) { 913 if (node->parent() != model_->GetBookmarkBarNode()) {
902 // We only care about nodes on the bookmark bar. 914 // We only care about nodes on the bookmark bar.
903 return; 915 return;
904 } 916 }
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after
1444 void BookmarkBarGtk::OnEditBookmarksEnabledChanged() { 1456 void BookmarkBarGtk::OnEditBookmarksEnabledChanged() {
1445 GtkDestDefaults dest_defaults = 1457 GtkDestDefaults dest_defaults =
1446 *edit_bookmarks_enabled_ ? GTK_DEST_DEFAULT_ALL : 1458 *edit_bookmarks_enabled_ ? GTK_DEST_DEFAULT_ALL :
1447 GTK_DEST_DEFAULT_DROP; 1459 GTK_DEST_DEFAULT_DROP;
1448 gtk_drag_dest_set(overflow_button_, dest_defaults, NULL, 0, kDragAction); 1460 gtk_drag_dest_set(overflow_button_, dest_defaults, NULL, 0, kDragAction);
1449 gtk_drag_dest_set(other_bookmarks_button_, dest_defaults, 1461 gtk_drag_dest_set(other_bookmarks_button_, dest_defaults,
1450 NULL, 0, kDragAction); 1462 NULL, 0, kDragAction);
1451 ui::SetDestTargetList(overflow_button_, kDestTargetList); 1463 ui::SetDestTargetList(overflow_button_, kDestTargetList);
1452 ui::SetDestTargetList(other_bookmarks_button_, kDestTargetList); 1464 ui::SetDestTargetList(other_bookmarks_button_, kDestTargetList);
1453 } 1465 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698