summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk
diff options
context:
space:
mode:
authorjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-03 17:18:08 +0000
committerjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-03 17:18:08 +0000
commit4747f48db280ea100258ab20881dc7e0bfeb3f68 (patch)
treec70219d6a861f4306fd6cfe837db4f94401dc366 /chrome/browser/gtk
parent9ab86d92329333998be78bb3f1cebad74cc92f7e (diff)
downloadchromium_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.cc117
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));
}