diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-28 22:28:45 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-28 22:28:45 +0000 |
commit | 41136d524446138af183af9ede781d87846828c6 (patch) | |
tree | 04eda23850a2f966417bec752d299cc3d6555e97 /chrome | |
parent | 26e9bd105c818600c5d1dfdc9143b4d8b12aa7c1 (diff) | |
download | chromium_src-41136d524446138af183af9ede781d87846828c6.zip chromium_src-41136d524446138af183af9ede781d87846828c6.tar.gz chromium_src-41136d524446138af183af9ede781d87846828c6.tar.bz2 |
GTK: More hotkeys.
- ctrl+e = ctrl+k
- alt + e and alt + f to open the page and wrench menus respectively (emulating menu bar _File and _Edit)
BUG=none
TEST=use the new hotkeys
Review URL: http://codereview.chromium.org/160292
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21905 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/gtk/browser_toolbar_gtk.cc | 28 | ||||
-rw-r--r-- | chrome/browser/gtk/browser_toolbar_gtk.h | 4 | ||||
-rw-r--r-- | chrome/browser/gtk/browser_window_gtk.cc | 1 | ||||
-rw-r--r-- | chrome/browser/gtk/menu_gtk.cc | 5 |
4 files changed, 38 insertions, 0 deletions
diff --git a/chrome/browser/gtk/browser_toolbar_gtk.cc b/chrome/browser/gtk/browser_toolbar_gtk.cc index dfaad68..bd1639d 100644 --- a/chrome/browser/gtk/browser_toolbar_gtk.cc +++ b/chrome/browser/gtk/browser_toolbar_gtk.cc @@ -228,6 +228,20 @@ void BrowserToolbarGtk::Init(Profile* profile, gtk_box_pack_start(GTK_BOX(toolbar_), menus_hbox_, FALSE, FALSE, 0); + // Page and app menu accelerators. + GtkAccelGroup* accel_group = gtk_accel_group_new(); + gtk_window_add_accel_group(top_level_window, accel_group); + // Drop the initial ref on |accel_group| so |window_| will own it. + g_object_unref(accel_group); + // I would use "popup-menu" here, but GTK complains. I would use "activate", + // but the docs say never to connect to that signal. + gtk_widget_add_accelerator(page_menu, "clicked", accel_group, + GDK_e, GDK_MOD1_MASK, + static_cast<GtkAccelFlags>(0)); + gtk_widget_add_accelerator(chrome_menu, "clicked", accel_group, + GDK_f, GDK_MOD1_MASK, + static_cast<GtkAccelFlags>(0)); + if (ShouldOnlyShowLocation()) { gtk_widget_show(event_box_); gtk_widget_show(toolbar_); @@ -442,6 +456,8 @@ GtkWidget* BrowserToolbarGtk::BuildToolbarMenuButton( gtk_widget_set_tooltip_text(button, localized_tooltip.c_str()); g_signal_connect(button, "button-press-event", G_CALLBACK(OnMenuButtonPressEvent), this); + g_signal_connect(button, "clicked", + G_CALLBACK(OnMenuClicked), this); GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS); return button; @@ -582,6 +598,18 @@ gboolean BrowserToolbarGtk::OnMenuButtonPressEvent(GtkWidget* button, } // static +gboolean BrowserToolbarGtk::OnMenuClicked(GtkWidget* button, + BrowserToolbarGtk* toolbar) { + gtk_chrome_button_set_paint_state(GTK_CHROME_BUTTON(button), + GTK_STATE_ACTIVE); + MenuGtk* menu = button == toolbar->page_menu_button_.get() ? + toolbar->page_menu_.get() : toolbar->app_menu_.get(); + menu->PopupAsFromKeyEvent(button); + + return TRUE; +} + +// static void BrowserToolbarGtk::OnDragDataReceived(GtkWidget* widget, GdkDragContext* drag_context, gint x, gint y, GtkSelectionData* data, guint info, guint time, diff --git a/chrome/browser/gtk/browser_toolbar_gtk.h b/chrome/browser/gtk/browser_toolbar_gtk.h index 945d06c..21bca5f 100644 --- a/chrome/browser/gtk/browser_toolbar_gtk.h +++ b/chrome/browser/gtk/browser_toolbar_gtk.h @@ -130,6 +130,10 @@ class BrowserToolbarGtk : public CommandUpdater::CommandObserver, GdkEventButton* event, BrowserToolbarGtk* toolbar); + // Gtk callback used when a hotkey activates the menu buttons. + static gboolean OnMenuClicked(GtkWidget* button, + BrowserToolbarGtk* toolbar); + // Used for drags onto home button. static void OnDragDataReceived(GtkWidget* widget, GdkDragContext* drag_context, diff --git a/chrome/browser/gtk/browser_window_gtk.cc b/chrome/browser/gtk/browser_window_gtk.cc index c8dae03..a2c477e 100644 --- a/chrome/browser/gtk/browser_window_gtk.cc +++ b/chrome/browser/gtk/browser_window_gtk.cc @@ -154,6 +154,7 @@ const struct AcceleratorMapping { } kAcceleratorMap[] = { // Focus. { GDK_k, IDC_FOCUS_SEARCH, GDK_CONTROL_MASK }, + { GDK_e, IDC_FOCUS_SEARCH, GDK_CONTROL_MASK }, { XF86XK_Search, IDC_FOCUS_SEARCH, GdkModifierType(0) }, { GDK_l, IDC_FOCUS_LOCATION, GDK_CONTROL_MASK }, { GDK_d, IDC_FOCUS_LOCATION, GDK_MOD1_MASK }, diff --git a/chrome/browser/gtk/menu_gtk.cc b/chrome/browser/gtk/menu_gtk.cc index f1b8f9a..f0a85d8 100644 --- a/chrome/browser/gtk/menu_gtk.cc +++ b/chrome/browser/gtk/menu_gtk.cc @@ -106,6 +106,11 @@ void MenuGtk::PopupAsContext(guint32 event_time) { gtk_menu_popup(GTK_MENU(menu_.get()), NULL, NULL, NULL, NULL, 3, event_time); } +void MenuGtk::PopupAsFromKeyEvent(GtkWidget* widget) { + Popup(widget, 0, gtk_get_current_event_time()); + gtk_menu_shell_select_first(GTK_MENU_SHELL(menu_.get()), FALSE); +} + void MenuGtk::Cancel() { gtk_menu_popdown(GTK_MENU(menu_.get())); } |