[mutter/wayland: 10/15] accel-parse: Integrate Above_Tab parsing code directly into our copy
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wayland: 10/15] accel-parse: Integrate Above_Tab parsing code directly into our copy
- Date: Mon, 7 Apr 2014 15:23:14 +0000 (UTC)
commit 50e69109b6509a25456c0ecbfbd71f92e6eaa3ee
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Mon Apr 7 11:03:10 2014 -0400
accel-parse: Integrate Above_Tab parsing code directly into our copy
src/core/meta-accel-parse.c | 41 ++++++-----------------------------------
1 files changed, 6 insertions(+), 35 deletions(-)
---
diff --git a/src/core/meta-accel-parse.c b/src/core/meta-accel-parse.c
index 8eddd53..0fc0d2c 100644
--- a/src/core/meta-accel-parse.c
+++ b/src/core/meta-accel-parse.c
@@ -306,7 +306,12 @@ do_accelerator_parse (const gchar *accelerator,
error = TRUE;
goto out;
}
- else
+ else if (strcmp (accelerator, "Above_Tab") == 0)
+ {
+ keyval = META_KEY_ABOVE_TAB;
+ goto out;
+ }
+ else
{
keyval = gdk_keyval_from_name (accelerator);
if (keyval == GDK_KEY_VoidSymbol)
@@ -337,8 +342,6 @@ accelerator_parse (const char *accel,
guint *keycode,
GdkModifierType *keymask)
{
- const char *above_tab;
-
if (accel[0] == '0' && accel[1] == 'x')
{
*keysym = 0;
@@ -348,38 +351,6 @@ accelerator_parse (const char *accel,
return;
}
- /* The key name 'Above_Tab' is special - it's not an actual keysym name,
- * but rather refers to the key above the tab key. In order to use
- * the GDK parsing for modifiers in combination with it, we substitute
- * it with 'Tab' temporarily before calling gtk_accelerator_parse().
- */
-#define is_word_character(c) (g_ascii_isalnum(c) || ((c) == '_'))
-#define ABOVE_TAB "Above_Tab"
-#define ABOVE_TAB_LEN 9
-
- above_tab = strstr (accel, ABOVE_TAB);
- if (above_tab &&
- (above_tab == accel || !is_word_character (above_tab[-1])) &&
- !is_word_character (above_tab[ABOVE_TAB_LEN]))
- {
- char *before = g_strndup (accel, above_tab - accel);
- char *after = g_strdup (above_tab + ABOVE_TAB_LEN);
- char *replaced = g_strconcat (before, "Tab", after, NULL);
-
- do_accelerator_parse (replaced, NULL, keymask);
-
- g_free (before);
- g_free (after);
- g_free (replaced);
-
- *keysym = META_KEY_ABOVE_TAB;
- return;
- }
-
-#undef is_word_character
-#undef ABOVE_TAB
-#undef ABOVE_TAB_LEN
-
do_accelerator_parse (accel, keysym, keymask);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]