summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2011-10-24 18:06:27 (GMT)
committerBastien Nocera <hadess@hadess.net>2011-10-24 18:06:27 (GMT)
commit7f5733b454e26c882d4e707b57cd03b104f57dd2 (patch)
treef4be1dbf90aab990bfcfe312f690e6d2311a19a8
parenteacbe935d30a88c0603fac1b1ac938313da00263 (diff)
downloadgnome-control-center-7f5733b454e26c882d4e707b57cd03b104f57dd2.zip
gnome-control-center-7f5733b454e26c882d4e707b57cd03b104f57dd2.tar.xz
common: Fix handling of <Primary>
As used in the new GTK+ 3.2.1. https://bugzilla.redhat.com/show_bug.cgi?id=748444
-rw-r--r--panels/common/eggaccelerators.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/panels/common/eggaccelerators.c b/panels/common/eggaccelerators.c
index 5a672ba..71f2433 100644
--- a/panels/common/eggaccelerators.c
+++ b/panels/common/eggaccelerators.c
@@ -178,6 +178,20 @@ is_hyper (const gchar *string)
}
static inline gboolean
+is_primary (const gchar *string)
+{
+ return ((string[0] == '<') &&
+ (string[1] == 'p' || string[1] == 'P') &&
+ (string[2] == 'r' || string[2] == 'R') &&
+ (string[3] == 'i' || string[3] == 'I') &&
+ (string[4] == 'm' || string[4] == 'M') &&
+ (string[5] == 'a' || string[5] == 'A') &&
+ (string[6] == 'r' || string[6] == 'R') &&
+ (string[7] == 'y' || string[7] == 'Y') &&
+ (string[8] == '>'));
+}
+
+static inline gboolean
is_keycode (const gchar *string)
{
return ((string[0] == '0') &&
@@ -310,6 +324,12 @@ egg_accelerator_parse_virtual (const gchar *accelerator,
len -= 7;
mods |= EGG_VIRTUAL_SUPER_MASK;
}
+ else if (len >= 9 && is_primary (accelerator))
+ {
+ accelerator += 9;
+ len -= 9;
+ mods |= EGG_VIRTUAL_CONTROL_MASK;
+ }
else
{
gchar last_ch;