| Index: chrome/browser/gtk/bookmark_menu_controller_gtk.cc
|
| ===================================================================
|
| --- chrome/browser/gtk/bookmark_menu_controller_gtk.cc (revision 20108)
|
| +++ chrome/browser/gtk/bookmark_menu_controller_gtk.cc (working copy)
|
| @@ -12,6 +12,7 @@
|
| #include "base/string_util.h"
|
| #include "chrome/browser/gtk/bookmark_context_menu.h"
|
| #include "chrome/browser/gtk/bookmark_utils_gtk.h"
|
| +#include "chrome/browser/gtk/gtk_chrome_button.h"
|
| #include "chrome/browser/gtk/gtk_dnd_util.h"
|
| #include "chrome/browser/gtk/gtk_theme_provider.h"
|
| #include "chrome/browser/gtk/menu_gtk.h"
|
| @@ -55,9 +56,12 @@
|
| page_navigator_(navigator),
|
| parent_window_(window),
|
| node_(node),
|
| - ignore_button_release_(false) {
|
| + ignore_button_release_(false),
|
| + triggering_widget_(NULL) {
|
| menu_.Own(gtk_menu_new());
|
| BuildMenu(node, start_child_index, menu_.get());
|
| + g_signal_connect(menu_.get(), "hide",
|
| + G_CALLBACK(OnMenuHidden), this);
|
| gtk_widget_show_all(menu_.get());
|
| }
|
|
|
| @@ -70,6 +74,9 @@
|
| guint32 timestamp) {
|
| profile_->GetBookmarkModel()->AddObserver(this);
|
|
|
| + triggering_widget_ = widget;
|
| + gtk_chrome_button_set_paint_state(GTK_CHROME_BUTTON(widget),
|
| + GTK_STATE_ACTIVE);
|
| gtk_menu_popup(GTK_MENU(menu_.get()), NULL, NULL,
|
| &MenuGtk::MenuPositionFunc,
|
| widget, button_type, timestamp);
|
| @@ -157,6 +164,7 @@
|
| }
|
| }
|
|
|
| +// static
|
| gboolean BookmarkMenuController::OnButtonPressed(
|
| GtkWidget* sender,
|
| GdkEventButton* event,
|
| @@ -181,6 +189,7 @@
|
| return FALSE;
|
| }
|
|
|
| +// static
|
| gboolean BookmarkMenuController::OnButtonReleased(
|
| GtkWidget* sender,
|
| GdkEventButton* event,
|
| @@ -206,6 +215,16 @@
|
| return FALSE;
|
| }
|
|
|
| +// static
|
| +void BookmarkMenuController::OnMenuHidden(GtkWidget* menu,
|
| + BookmarkMenuController* controller) {
|
| + if (controller->triggering_widget_) {
|
| + gtk_chrome_button_unset_paint_state(
|
| + GTK_CHROME_BUTTON(controller->triggering_widget_));
|
| + }
|
| +}
|
| +
|
| +// static
|
| void BookmarkMenuController::OnMenuItemActivated(
|
| GtkMenuItem* menu_item, BookmarkMenuController* controller) {
|
| controller->NavigateToMenuItem(GTK_WIDGET(menu_item), CURRENT_TAB);
|
|
|