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

Side by Side Diff: chrome/browser/ui/gtk/global_bookmark_menu.cc

Issue 7017028: Revert "Revert 85330 - GTK: Bring global menu out of about:flags." (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 9 years, 7 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
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/global_bookmark_menu.h" 5 #include "chrome/browser/ui/gtk/global_bookmark_menu.h"
6 6
7 #include <dlfcn.h> 7 #include <dlfcn.h>
8 #include <gtk/gtk.h> 8 #include <gtk/gtk.h>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 default_favicon_ = GtkThemeService::GetDefaultFavicon(true); 61 default_favicon_ = GtkThemeService::GetDefaultFavicon(true);
62 default_folder_ = GtkThemeService::GetFolderIcon(true); 62 default_folder_ = GtkThemeService::GetFolderIcon(true);
63 registrar_.Add(this, NotificationType::BROWSER_THEME_CHANGED, 63 registrar_.Add(this, NotificationType::BROWSER_THEME_CHANGED,
64 Source<Profile>(profile_)); 64 Source<Profile>(profile_));
65 } 65 }
66 66
67 GlobalBookmarkMenu::~GlobalBookmarkMenu() { 67 GlobalBookmarkMenu::~GlobalBookmarkMenu() {
68 profile_->GetBookmarkModel()->RemoveObserver(this); 68 profile_->GetBookmarkModel()->RemoveObserver(this);
69 } 69 }
70 70
71 void GlobalBookmarkMenu::Init(GtkWidget* bookmark_menu) { 71 void GlobalBookmarkMenu::Init(GtkWidget* bookmark_menu,
72 bookmark_menu_ = bookmark_menu; 72 GtkWidget* bookmark_menu_item) {
73 bookmark_menu_.Own(bookmark_menu);
73 74
74 EnsureMenuItemFunctions(); 75 EnsureMenuItemFunctions();
75 if (gtk_menu_item_set_label_sym) { 76 if (gtk_menu_item_set_label_sym) {
76 BookmarkModel* model = profile_->GetBookmarkModel(); 77 BookmarkModel* model = profile_->GetBookmarkModel();
77 model->AddObserver(this); 78 model->AddObserver(this);
78 if (model->IsLoaded()) 79 if (model->IsLoaded())
79 Loaded(model); 80 Loaded(model);
80 } 81 }
81 } 82 }
82 83
83 void GlobalBookmarkMenu::RebuildMenuInFuture() { 84 void GlobalBookmarkMenu::RebuildMenuInFuture() {
84 method_factory_.RevokeAll(); 85 method_factory_.RevokeAll();
85 MessageLoop::current()->PostTask( 86 MessageLoop::current()->PostTask(
86 FROM_HERE, 87 FROM_HERE,
87 method_factory_.NewRunnableMethod(&GlobalBookmarkMenu::RebuildMenu)); 88 method_factory_.NewRunnableMethod(&GlobalBookmarkMenu::RebuildMenu));
88 } 89 }
89 90
90 void GlobalBookmarkMenu::RebuildMenu() { 91 void GlobalBookmarkMenu::RebuildMenu() {
91
92
93 BookmarkModel* model = profile_->GetBookmarkModel(); 92 BookmarkModel* model = profile_->GetBookmarkModel();
94 DCHECK(model); 93 DCHECK(model);
95 DCHECK(model->IsLoaded()); 94 DCHECK(model->IsLoaded());
96 95
97 ClearBookmarkMenu(); 96 ClearBookmarkMenu();
98 97
99 const BookmarkNode* bar_node = model->GetBookmarkBarNode(); 98 const BookmarkNode* bar_node = model->GetBookmarkBarNode();
100 if (bar_node->child_count()) { 99 if (bar_node->child_count()) {
101 AddBookmarkMenuItem(bookmark_menu_, gtk_separator_menu_item_new()); 100 AddBookmarkMenuItem(bookmark_menu_.get(), gtk_separator_menu_item_new());
102 AddNodeToMenu(bar_node, bookmark_menu_); 101 AddNodeToMenu(bar_node, bookmark_menu_.get());
103 } 102 }
104 103
105 // Only display the other bookmarks folder in the menu if it has items in it. 104 // Only display the other bookmarks folder in the menu if it has items in it.
106 const BookmarkNode* other_node = model->other_node(); 105 const BookmarkNode* other_node = model->other_node();
107 if (other_node->child_count()) { 106 if (other_node->child_count()) {
108 GtkWidget* submenu = gtk_menu_new(); 107 GtkWidget* submenu = gtk_menu_new();
109 AddNodeToMenu(other_node, submenu); 108 AddNodeToMenu(other_node, submenu);
110 109
111 AddBookmarkMenuItem(bookmark_menu_, gtk_separator_menu_item_new()); 110 AddBookmarkMenuItem(bookmark_menu_.get(), gtk_separator_menu_item_new());
112 111
113 GtkWidget* menu_item = gtk_image_menu_item_new_with_label( 112 GtkWidget* menu_item = gtk_image_menu_item_new_with_label(
114 l10n_util::GetStringUTF8(IDS_BOOMARK_BAR_OTHER_FOLDER_NAME).c_str()); 113 l10n_util::GetStringUTF8(IDS_BOOMARK_BAR_OTHER_FOLDER_NAME).c_str());
115 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), submenu); 114 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), submenu);
116 gtk_image_menu_item_set_image( 115 gtk_image_menu_item_set_image(
117 GTK_IMAGE_MENU_ITEM(menu_item), 116 GTK_IMAGE_MENU_ITEM(menu_item),
118 gtk_image_new_from_pixbuf(default_folder_)); 117 gtk_image_new_from_pixbuf(default_folder_));
119 118
120 AddBookmarkMenuItem(bookmark_menu_, menu_item); 119 AddBookmarkMenuItem(bookmark_menu_.get(), menu_item);
121 } 120 }
122 } 121 }
123 122
124 void GlobalBookmarkMenu::AddBookmarkMenuItem(GtkWidget* menu, 123 void GlobalBookmarkMenu::AddBookmarkMenuItem(GtkWidget* menu,
125 GtkWidget* menu_item) { 124 GtkWidget* menu_item) {
126 g_object_set_data(G_OBJECT(menu_item), "type-tag", 125 g_object_set_data(G_OBJECT(menu_item), "type-tag",
127 GINT_TO_POINTER(GlobalMenuBar::TAG_BOOKMARK_CLEARABLE)); 126 GINT_TO_POINTER(GlobalMenuBar::TAG_BOOKMARK_CLEARABLE));
128 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item); 127 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
129 gtk_widget_show(menu_item); 128 gtk_widget_show(menu_item);
130 } 129 }
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 std::map<const BookmarkNode*, GtkWidget*>::iterator it = 197 std::map<const BookmarkNode*, GtkWidget*>::iterator it =
199 bookmark_nodes_.find(node); 198 bookmark_nodes_.find(node);
200 if (it == bookmark_nodes_.end()) 199 if (it == bookmark_nodes_.end())
201 return NULL; 200 return NULL;
202 return it->second; 201 return it->second;
203 } 202 }
204 203
205 void GlobalBookmarkMenu::ClearBookmarkMenu() { 204 void GlobalBookmarkMenu::ClearBookmarkMenu() {
206 bookmark_nodes_.clear(); 205 bookmark_nodes_.clear();
207 206
208 gtk_container_foreach(GTK_CONTAINER(bookmark_menu_), 207 gtk_container_foreach(GTK_CONTAINER(bookmark_menu_.get()),
209 &ClearBookmarkItemCallback, 208 &ClearBookmarkItemCallback,
210 NULL); 209 NULL);
211 } 210 }
212 211
213 // static 212 // static
214 void GlobalBookmarkMenu::ClearBookmarkItemCallback(GtkWidget* menu_item, 213 void GlobalBookmarkMenu::ClearBookmarkItemCallback(GtkWidget* menu_item,
215 void* unused) { 214 void* unused) {
216 int tag = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menu_item), "type-tag")); 215 int tag = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menu_item), "type-tag"));
217 if (tag == GlobalMenuBar::TAG_BOOKMARK_CLEARABLE) 216 if (tag == GlobalMenuBar::TAG_BOOKMARK_CLEARABLE)
218 gtk_widget_destroy(menu_item); 217 gtk_widget_destroy(menu_item);
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 void GlobalBookmarkMenu::OnBookmarkItemActivated(GtkWidget* menu_item) { 286 void GlobalBookmarkMenu::OnBookmarkItemActivated(GtkWidget* menu_item) {
288 // The actual mouse event that generated this activated event was in a 287 // The actual mouse event that generated this activated event was in a
289 // different process. Go with something default. 288 // different process. Go with something default.
290 const BookmarkNode* node = static_cast<const BookmarkNode*>( 289 const BookmarkNode* node = static_cast<const BookmarkNode*>(
291 g_object_get_data(G_OBJECT(menu_item), "bookmark-node")); 290 g_object_get_data(G_OBJECT(menu_item), "bookmark-node"));
292 291
293 browser_->OpenURL(node->GetURL(), GURL(), NEW_FOREGROUND_TAB, 292 browser_->OpenURL(node->GetURL(), GURL(), NEW_FOREGROUND_TAB,
294 PageTransition::AUTO_BOOKMARK); 293 PageTransition::AUTO_BOOKMARK);
295 } 294 }
296 295
OLDNEW
« no previous file with comments | « chrome/browser/ui/gtk/global_bookmark_menu.h ('k') | chrome/browser/ui/gtk/global_history_menu.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698