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

Side by Side Diff: chrome/browser/gtk/bookmark_menu_controller_gtk.cc

Issue 200029: Make the bookmark toolbar folders act like a menu bar.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: lint Created 11 years, 3 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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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/gtk/bookmark_menu_controller_gtk.h" 5 #include "chrome/browser/gtk/bookmark_menu_controller_gtk.h"
6 6
7 #include <gtk/gtk.h> 7 #include <gtk/gtk.h>
8 8
9 #include "app/gtk_dnd_util.h" 9 #include "app/gtk_dnd_util.h"
10 #include "app/l10n_util.h" 10 #include "app/l10n_util.h"
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 const BookmarkNode* node, 90 const BookmarkNode* node,
91 int start_child_index, 91 int start_child_index,
92 bool show_other_folder) 92 bool show_other_folder)
93 : browser_(browser), 93 : browser_(browser),
94 profile_(profile), 94 profile_(profile),
95 page_navigator_(navigator), 95 page_navigator_(navigator),
96 parent_window_(window), 96 parent_window_(window),
97 node_(node), 97 node_(node),
98 ignore_button_release_(false), 98 ignore_button_release_(false),
99 triggering_widget_(NULL) { 99 triggering_widget_(NULL) {
100 menu_.Own(gtk_menu_new()); 100 menu_ = gtk_menu_new();
101 BuildMenu(node, start_child_index, menu_.get()); 101 BuildMenu(node, start_child_index, menu_);
102 g_signal_connect(menu_.get(), "hide", 102 g_signal_connect(menu_, "hide",
103 G_CALLBACK(OnMenuHidden), this); 103 G_CALLBACK(OnMenuHidden), this);
104 gtk_widget_show_all(menu_.get()); 104 gtk_widget_show_all(menu_);
105 } 105 }
106 106
107 BookmarkMenuController::~BookmarkMenuController() { 107 BookmarkMenuController::~BookmarkMenuController() {
108 profile_->GetBookmarkModel()->RemoveObserver(this); 108 profile_->GetBookmarkModel()->RemoveObserver(this);
109 menu_.Destroy(); 109 gtk_menu_popdown(GTK_MENU(menu_));
110 } 110 }
111 111
112 void BookmarkMenuController::Popup(GtkWidget* widget, gint button_type, 112 void BookmarkMenuController::Popup(GtkWidget* widget, gint button_type,
113 guint32 timestamp) { 113 guint32 timestamp) {
114 profile_->GetBookmarkModel()->AddObserver(this); 114 profile_->GetBookmarkModel()->AddObserver(this);
115 115
116 triggering_widget_ = widget; 116 triggering_widget_ = widget;
117 gtk_chrome_button_set_paint_state(GTK_CHROME_BUTTON(widget), 117 gtk_chrome_button_set_paint_state(GTK_CHROME_BUTTON(widget),
118 GTK_STATE_ACTIVE); 118 GTK_STATE_ACTIVE);
119 gtk_menu_popup(GTK_MENU(menu_.get()), NULL, NULL, 119 gtk_menu_popup(GTK_MENU(menu_), NULL, NULL,
120 &MenuGtk::MenuPositionFunc, 120 &MenuGtk::MenuPositionFunc,
121 widget, button_type, timestamp); 121 widget, button_type, timestamp);
122 } 122 }
123 123
124 void BookmarkMenuController::BookmarkModelChanged() { 124 void BookmarkMenuController::BookmarkModelChanged() {
125 gtk_menu_popdown(GTK_MENU(menu_.get())); 125 gtk_menu_popdown(GTK_MENU(menu_));
126 } 126 }
127 127
128 void BookmarkMenuController::BookmarkNodeFavIconLoaded( 128 void BookmarkMenuController::BookmarkNodeFavIconLoaded(
129 BookmarkModel* model, const BookmarkNode* node) { 129 BookmarkModel* model, const BookmarkNode* node) {
130 std::map<const BookmarkNode*, GtkWidget*>::iterator it = 130 std::map<const BookmarkNode*, GtkWidget*>::iterator it =
131 node_to_menu_widget_map_.find(node); 131 node_to_menu_widget_map_.find(node);
132 if (it != node_to_menu_widget_map_.end()) 132 if (it != node_to_menu_widget_map_.end())
133 SetImageMenuItem(it->second, node, model); 133 SetImageMenuItem(it->second, node, model);
134 } 134 }
135 135
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 } 272 }
273 273
274 // Releasing either button 1 or 2 should trigger the bookmark menu. 274 // Releasing either button 1 or 2 should trigger the bookmark menu.
275 if (event->button == 1 || event->button == 2) { 275 if (event->button == 1 || event->button == 2) {
276 WindowOpenDisposition disposition = 276 WindowOpenDisposition disposition =
277 event_utils::DispositionFromEventFlags(event->state); 277 event_utils::DispositionFromEventFlags(event->state);
278 controller->NavigateToMenuItem(sender, disposition); 278 controller->NavigateToMenuItem(sender, disposition);
279 279
280 // We need to manually dismiss the popup menu because we're overriding 280 // We need to manually dismiss the popup menu because we're overriding
281 // button-release-event. 281 // button-release-event.
282 gtk_menu_popdown(GTK_MENU(controller->menu_.get())); 282 gtk_menu_popdown(GTK_MENU(controller->menu_));
283 return TRUE; 283 return TRUE;
284 } 284 }
285 285
286 return FALSE; 286 return FALSE;
287 } 287 }
288 288
289 // static 289 // static
290 void BookmarkMenuController::OnMenuHidden(GtkWidget* menu, 290 void BookmarkMenuController::OnMenuHidden(GtkWidget* menu,
291 BookmarkMenuController* controller) { 291 BookmarkMenuController* controller) {
292 if (controller->triggering_widget_) { 292 if (controller->triggering_widget_) {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 // static 338 // static
339 void BookmarkMenuController::OnMenuItemDragGet( 339 void BookmarkMenuController::OnMenuItemDragGet(
340 GtkWidget* widget, GdkDragContext* context, 340 GtkWidget* widget, GdkDragContext* context,
341 GtkSelectionData* selection_data, 341 GtkSelectionData* selection_data,
342 guint target_type, guint time, 342 guint target_type, guint time,
343 BookmarkMenuController* controller) { 343 BookmarkMenuController* controller) {
344 const BookmarkNode* node = bookmark_utils::BookmarkNodeForWidget(widget); 344 const BookmarkNode* node = bookmark_utils::BookmarkNodeForWidget(widget);
345 bookmark_utils::WriteBookmarkToSelection(node, selection_data, target_type, 345 bookmark_utils::WriteBookmarkToSelection(node, selection_data, target_type,
346 controller->profile_); 346 controller->profile_);
347 } 347 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698