diff options
author | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-03 17:18:08 +0000 |
---|---|---|
committer | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-03 17:18:08 +0000 |
commit | 4747f48db280ea100258ab20881dc7e0bfeb3f68 (patch) | |
tree | c70219d6a861f4306fd6cfe837db4f94401dc366 /chrome/browser/gtk | |
parent | 9ab86d92329333998be78bb3f1cebad74cc92f7e (diff) | |
download | chromium_src-4747f48db280ea100258ab20881dc7e0bfeb3f68.zip chromium_src-4747f48db280ea100258ab20881dc7e0bfeb3f68.tar.gz chromium_src-4747f48db280ea100258ab20881dc7e0bfeb3f68.tar.bz2 |
Adding registration of accelerators for the browser in toolkit_views.
BUG=None
TEST=Open Chrome built with toolkit_views, test that accelerators work.
See review:
http://codereview.chromium.org/160502
Review URL: http://codereview.chromium.org/159790
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22277 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk')
-rw-r--r-- | chrome/browser/gtk/browser_window_gtk.cc | 117 |
1 files changed, 8 insertions, 109 deletions
diff --git a/chrome/browser/gtk/browser_window_gtk.cc b/chrome/browser/gtk/browser_window_gtk.cc index ccfc556..9366776 100644 --- a/chrome/browser/gtk/browser_window_gtk.cc +++ b/chrome/browser/gtk/browser_window_gtk.cc @@ -21,6 +21,7 @@ #include "base/string_util.h" #include "base/time.h" #include "chrome/app/chrome_dll_resource.h" +#include "chrome/browser/accelerator_table_linux.h" #include "chrome/browser/bookmarks/bookmark_utils.h" #include "chrome/browser/browser.h" #include "chrome/browser/browser_list.h" @@ -151,118 +152,16 @@ gfx::Rect GetInitialWindowBounds(GtkWindow* window) { return gfx::Rect(x, y, width, height); } -// Keep this in sync with various context menus which display the accelerators. -const struct AcceleratorMapping { - guint keyval; - int command_id; - GdkModifierType modifier_type; -} 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 }, - { GDK_F6, IDC_FOCUS_LOCATION, GdkModifierType(0) }, - { XF86XK_OpenURL, IDC_FOCUS_LOCATION, GdkModifierType(0) }, - { XF86XK_Go, IDC_FOCUS_LOCATION, GdkModifierType(0) }, - - // Tab/window controls. - { GDK_Page_Down, IDC_SELECT_NEXT_TAB, GDK_CONTROL_MASK }, - { GDK_Page_Up, IDC_SELECT_PREVIOUS_TAB, GDK_CONTROL_MASK }, - { GDK_w, IDC_CLOSE_TAB, GDK_CONTROL_MASK }, - { GDK_t, IDC_RESTORE_TAB, - GdkModifierType(GDK_CONTROL_MASK | GDK_SHIFT_MASK) }, - - { GDK_1, IDC_SELECT_TAB_0, GDK_CONTROL_MASK }, - { GDK_2, IDC_SELECT_TAB_1, GDK_CONTROL_MASK }, - { GDK_3, IDC_SELECT_TAB_2, GDK_CONTROL_MASK }, - { GDK_4, IDC_SELECT_TAB_3, GDK_CONTROL_MASK }, - { GDK_5, IDC_SELECT_TAB_4, GDK_CONTROL_MASK }, - { GDK_6, IDC_SELECT_TAB_5, GDK_CONTROL_MASK }, - { GDK_7, IDC_SELECT_TAB_6, GDK_CONTROL_MASK }, - { GDK_8, IDC_SELECT_TAB_7, GDK_CONTROL_MASK }, - { GDK_9, IDC_SELECT_LAST_TAB, GDK_CONTROL_MASK }, - - { GDK_1, IDC_SELECT_TAB_0, GDK_MOD1_MASK }, - { GDK_2, IDC_SELECT_TAB_1, GDK_MOD1_MASK }, - { GDK_3, IDC_SELECT_TAB_2, GDK_MOD1_MASK }, - { GDK_4, IDC_SELECT_TAB_3, GDK_MOD1_MASK }, - { GDK_5, IDC_SELECT_TAB_4, GDK_MOD1_MASK }, - { GDK_6, IDC_SELECT_TAB_5, GDK_MOD1_MASK }, - { GDK_7, IDC_SELECT_TAB_6, GDK_MOD1_MASK }, - { GDK_8, IDC_SELECT_TAB_7, GDK_MOD1_MASK }, - { GDK_9, IDC_SELECT_LAST_TAB, GDK_MOD1_MASK }, - - { GDK_F4, IDC_CLOSE_TAB, GDK_CONTROL_MASK }, - { GDK_F4, IDC_CLOSE_WINDOW, GDK_MOD1_MASK }, - - // Zoom level. - { GDK_plus, IDC_ZOOM_PLUS, - GdkModifierType(GDK_CONTROL_MASK | GDK_SHIFT_MASK) }, - { GDK_equal, IDC_ZOOM_PLUS, GDK_CONTROL_MASK }, - { XF86XK_ZoomIn, IDC_ZOOM_PLUS, GdkModifierType(0) }, - { GDK_0, IDC_ZOOM_NORMAL, GDK_CONTROL_MASK }, - { GDK_minus, IDC_ZOOM_MINUS, GDK_CONTROL_MASK }, - { GDK_underscore, IDC_ZOOM_MINUS, - GdkModifierType(GDK_CONTROL_MASK | GDK_SHIFT_MASK) }, - { XF86XK_ZoomOut, IDC_ZOOM_MINUS, GdkModifierType(0) }, - - // Find in page. - { GDK_g, IDC_FIND_NEXT, GDK_CONTROL_MASK }, - { GDK_F3, IDC_FIND_NEXT, GdkModifierType(0) }, - { GDK_g, IDC_FIND_PREVIOUS, - GdkModifierType(GDK_CONTROL_MASK | GDK_SHIFT_MASK) }, - { GDK_F3, IDC_FIND_PREVIOUS, GDK_SHIFT_MASK }, - - // Navigation / toolbar buttons. - { GDK_Home, IDC_HOME, GDK_MOD1_MASK }, - { XF86XK_HomePage, IDC_HOME, GdkModifierType(0) }, - { GDK_Escape, IDC_STOP, GdkModifierType(0) }, - { XF86XK_Stop, IDC_STOP, GdkModifierType(0) }, - { GDK_Left, IDC_BACK, GDK_MOD1_MASK }, - { GDK_BackSpace, IDC_BACK, GdkModifierType(0) }, - { XF86XK_Back, IDC_BACK, GdkModifierType(0) }, - { GDK_Right, IDC_FORWARD, GDK_MOD1_MASK }, - { GDK_BackSpace, IDC_FORWARD, GDK_SHIFT_MASK }, - { XF86XK_Forward, IDC_FORWARD, GdkModifierType(0) }, - { GDK_r, IDC_RELOAD, GDK_CONTROL_MASK }, - { GDK_F5, IDC_RELOAD, GdkModifierType(0) }, - { GDK_F5, IDC_RELOAD, GDK_CONTROL_MASK }, - { GDK_F5, IDC_RELOAD, GDK_SHIFT_MASK }, - { XF86XK_Reload, IDC_RELOAD, GdkModifierType(0) }, - { XF86XK_Refresh, IDC_RELOAD, GdkModifierType(0) }, - - // Miscellany. - { GDK_d, IDC_STAR, GDK_CONTROL_MASK }, - { XF86XK_AddFavorite, IDC_STAR, GdkModifierType(0) }, - { XF86XK_Favorites, IDC_SHOW_BOOKMARK_BAR, GdkModifierType(0) }, - { XF86XK_History, IDC_SHOW_HISTORY, GdkModifierType(0) }, - { GDK_o, IDC_OPEN_FILE, GDK_CONTROL_MASK }, - { GDK_F11, IDC_FULLSCREEN, GdkModifierType(0) }, - { GDK_u, IDC_VIEW_SOURCE, GDK_CONTROL_MASK }, - { GDK_p, IDC_PRINT, GDK_CONTROL_MASK }, - { GDK_Escape, IDC_TASK_MANAGER, GDK_SHIFT_MASK }, - -#if defined(OS_CHROMEOS) - { GDK_f, IDC_FULLSCREEN, - GdkModifierType(GDK_CONTROL_MASK | GDK_MOD1_MASK) }, - { GDK_Delete, IDC_TASK_MANAGER, - GdkModifierType(GDK_CONTROL_MASK | GDK_MOD1_MASK) }, - { GDK_comma, IDC_CONTROL_PANEL, GdkModifierType(GDK_CONTROL_MASK) }, -#endif -}; - int GetCommandId(guint accel_key, GdkModifierType modifier) { // Bug 9806: If capslock is on, we will get a capital letter as accel_key. accel_key = gdk_keyval_to_lower(accel_key); // Filter modifier to only include accelerator modifiers. modifier = static_cast<GdkModifierType>( modifier & gtk_accelerator_get_default_mod_mask()); - for (size_t i = 0; i < arraysize(kAcceleratorMap); ++i) { - if (kAcceleratorMap[i].keyval == accel_key && - kAcceleratorMap[i].modifier_type == modifier) - return kAcceleratorMap[i].command_id; + for (size_t i = 0; i < browser::kAcceleratorMapLength; ++i) { + if (browser::kAcceleratorMap[i].keyval == accel_key && + browser::kAcceleratorMap[i].modifier_type == modifier) + return browser::kAcceleratorMap[i].command_id; } NOTREACHED(); return 0; @@ -1423,11 +1322,11 @@ void BrowserWindowGtk::ConnectAccelerators() { // Drop the initial ref on |accel_group| so |window_| will own it. g_object_unref(accel_group); - for (size_t i = 0; i < arraysize(kAcceleratorMap); ++i) { + for (size_t i = 0; i < browser::kAcceleratorMapLength; ++i) { gtk_accel_group_connect( accel_group, - kAcceleratorMap[i].keyval, - kAcceleratorMap[i].modifier_type, + browser::kAcceleratorMap[i].keyval, + browser::kAcceleratorMap[i].modifier_type, GtkAccelFlags(0), g_cclosure_new(G_CALLBACK(OnGtkAccelerator), this, NULL)); } |