| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |