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