| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/action_box_button_gtk.h" | 5 #include "chrome/browser/ui/gtk/action_box_button_gtk.h" |
| 6 | 6 |
| 7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
| 8 | 8 |
| 9 #include "chrome/browser/extensions/extension_system.h" |
| 9 #include "chrome/browser/ui/browser.h" | 10 #include "chrome/browser/ui/browser.h" |
| 10 #include "chrome/browser/ui/gtk/custom_button.h" | 11 #include "chrome/browser/ui/gtk/custom_button.h" |
| 11 #include "chrome/browser/ui/gtk/view_id_util.h" | 12 #include "chrome/browser/ui/gtk/view_id_util.h" |
| 13 #include "chrome/browser/ui/toolbar/action_box_menu_model.h" |
| 12 #include "chrome/browser/ui/view_ids.h" | 14 #include "chrome/browser/ui/view_ids.h" |
| 13 #include "grit/generated_resources.h" | 15 #include "grit/generated_resources.h" |
| 14 #include "grit/theme_resources.h" | 16 #include "grit/theme_resources.h" |
| 15 #include "ui/base/l10n/l10n_util.h" | 17 #include "ui/base/l10n/l10n_util.h" |
| 16 | 18 |
| 17 ActionBoxButtonGtk::ActionBoxButtonGtk(Browser* browser) : browser_(browser) { | 19 ActionBoxButtonGtk::ActionBoxButtonGtk(Browser* browser) : browser_(browser) { |
| 18 button_.reset(new CustomDrawButton( | 20 button_.reset(new CustomDrawButton( |
| 19 IDR_ACTION_BOX_BUTTON, | 21 IDR_ACTION_BOX_BUTTON, |
| 20 IDR_ACTION_BOX_BUTTON_PRESSED, | 22 IDR_ACTION_BOX_BUTTON_PRESSED, |
| 21 IDR_ACTION_BOX_BUTTON_PRESSED, // TODO: hover | 23 IDR_ACTION_BOX_BUTTON_PRESSED, // TODO: hover |
| 22 0)); // TODO: disabled? | 24 0)); // TODO: disabled? |
| 23 gtk_widget_set_tooltip_text(widget(), | 25 gtk_widget_set_tooltip_text(widget(), |
| 24 l10n_util::GetStringUTF8(IDS_TOOLTIP_ACTION_BOX_BUTTON).c_str()); | 26 l10n_util::GetStringUTF8(IDS_TOOLTIP_ACTION_BOX_BUTTON).c_str()); |
| 25 | 27 |
| 26 g_signal_connect(widget(), "clicked", | 28 g_signal_connect(widget(), "button-press-event", |
| 27 G_CALLBACK(OnClickThunk), this); | 29 G_CALLBACK(OnButtonPressThunk), this); |
| 28 | 30 |
| 29 ViewIDUtil::SetID(widget(), VIEW_ID_ACTION_BOX_BUTTON); | 31 ViewIDUtil::SetID(widget(), VIEW_ID_ACTION_BOX_BUTTON); |
| 30 } | 32 } |
| 31 | 33 |
| 32 ActionBoxButtonGtk::~ActionBoxButtonGtk() { | 34 ActionBoxButtonGtk::~ActionBoxButtonGtk() { |
| 33 } | 35 } |
| 34 | 36 |
| 37 bool ActionBoxButtonGtk::AlwaysShowIconForCmd(int command_id) const { |
| 38 return true; |
| 39 } |
| 40 |
| 35 GtkWidget* ActionBoxButtonGtk::widget() { | 41 GtkWidget* ActionBoxButtonGtk::widget() { |
| 36 return button_->widget(); | 42 return button_->widget(); |
| 37 } | 43 } |
| 38 | 44 |
| 39 void ActionBoxButtonGtk::OnClick(GtkWidget* widget) { | 45 gboolean ActionBoxButtonGtk::OnButtonPress(GtkWidget* widget, |
| 40 // TODO(mpcomplete): show the menu. See back_forward_button_gtk for menu | 46 GdkEventButton* event) { |
| 41 // stuff. | 47 if (event->button != 1) |
| 48 return FALSE; |
| 49 |
| 50 ExtensionService* extension_service = extensions::ExtensionSystem::Get( |
| 51 browser_->profile())->extension_service(); |
| 52 model_.reset(new ActionBoxMenuModel(browser_, extension_service)); |
| 53 menu_.reset(new MenuGtk(this, model_.get())); |
| 54 menu_->PopupForWidget(button_->widget(), event->button, event->time); |
| 55 |
| 56 return FALSE; |
| 42 } | 57 } |
| OLD | NEW |