diff options
author | Matthias Clasen <mclasen@redhat.com> | 2012-09-09 18:28:48 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2012-09-09 18:28:48 -0400 |
commit | eb9223c008ccf1c2faabf512645894d3e4efe157 (patch) | |
tree | b41179e1571b64cb0e009d2459d70a869f3bcf4c /gdk | |
parent | 1c9f52038b9ac0b9a5a5a7c2376b59fd28f1d1a6 (diff) | |
download | gtk+-eb9223c008ccf1c2faabf512645894d3e4efe157.tar.gz |
Be more strict in ignoring ineffective modifiers
After my recent fix for this, nautilus was still having problems
telling keeping F10 and Shift-F10 apart. With this change, we are
treating levels with the same symbol like inactive levels, ignoring
them entirely.
Diffstat (limited to 'gdk')
-rw-r--r-- | gdk/x11/gdkkeys-x11.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gdk/x11/gdkkeys-x11.c b/gdk/x11/gdkkeys-x11.c index 9d06cbaeaf..4dba9d406f 100644 --- a/gdk/x11/gdkkeys-x11.c +++ b/gdk/x11/gdkkeys-x11.c @@ -1113,7 +1113,7 @@ MyEnhancedXkbTranslateKeyCode(register XkbDescPtr xkb, int found = 0; for (i=0,entry=type->map;i<type->map_count;i++,entry++) { - if (!entry->active) + if (!entry->active || syms[col+entry->level] == syms[col]) continue; if (mods_rtrn) { int bits = 0; @@ -1130,7 +1130,7 @@ MyEnhancedXkbTranslateKeyCode(register XkbDescPtr xkb, * and F10 anymore). And don't add modifiers that are * explicitly marked as preserved, either. */ - if ((bits == 1 && syms[col+entry->level] != syms[col]) || + if (bits == 1 || (mods&type->mods.mask) == entry->mods.mask) { if (type->preserve) @@ -1140,7 +1140,7 @@ MyEnhancedXkbTranslateKeyCode(register XkbDescPtr xkb, } } - if (!found&&((mods&type->mods.mask)==entry->mods.mask)) { + if (!found && ((mods&type->mods.mask) == entry->mods.mask)) { col+= entry->level; if (type->preserve) preserve= type->preserve[i].mask; |