diff options
| author | Bastien Nocera <hadess@hadess.net> | 2011-10-24 18:06:27 (GMT) |
|---|---|---|
| committer | Bastien Nocera <hadess@hadess.net> | 2011-10-24 18:06:27 (GMT) |
| commit | 7f5733b454e26c882d4e707b57cd03b104f57dd2 (patch) | |
| tree | f4be1dbf90aab990bfcfe312f690e6d2311a19a8 | |
| parent | eacbe935d30a88c0603fac1b1ac938313da00263 (diff) | |
| download | gnome-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.c | 20 |
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; |