summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2012-09-09 18:28:48 -0400
committerMatthias Clasen <mclasen@redhat.com>2012-09-09 18:28:48 -0400
commiteb9223c008ccf1c2faabf512645894d3e4efe157 (patch)
treeb41179e1571b64cb0e009d2459d70a869f3bcf4c /gdk
parent1c9f52038b9ac0b9a5a5a7c2376b59fd28f1d1a6 (diff)
downloadgtk+-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.c6
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;