raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=4af9664622dbbadbfc2b268761c1c1fa19b51989

commit 4af9664622dbbadbfc2b268761c1c1fa19b51989
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Tue Aug 5 11:23:28 2014 +0900

    ecore-x - use last modifier mask found, not first to match xserver logic
    
    this makes altgr not conflict as per
    https://phab.enlightenment.org/T1273 by using the last, not first
    occurance of the key in the mask modifier bits
---
 src/lib/ecore_x/xcb/ecore_xcb_keymap.c | 12 ++------
 src/lib/ecore_x/xlib/ecore_x.c         | 52 +++++++++++++---------------------
 2 files changed, 23 insertions(+), 41 deletions(-)

diff --git a/src/lib/ecore_x/xcb/ecore_xcb_keymap.c 
b/src/lib/ecore_x/xcb/ecore_xcb_keymap.c
index 3c3072f..530a3d4 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_keymap.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_keymap.c
@@ -361,19 +361,13 @@ _ecore_xcb_keymap_mask_get(void        *reply,
 
              for (j = 0; j < 8; j++)
                {
-                  sym2 =
-                    xcb_key_symbols_get_keysym(_ecore_xcb_keysyms,
-                                               modmap[i], j);
+                  sym2 = xcb_key_symbols_get_keysym(_ecore_xcb_keysyms,
+                                                    modmap[i], j);
                   if (sym2 != 0) break;
                }
-             if (sym2 == sym)
-               {
-                  mask = masks[i / rep->keycodes_per_modifier];
-                  break;
-               }
+             if (sym2 == sym) mask = masks[i / rep->keycodes_per_modifier];
           }
      }
-
    return mask;
 }
 
diff --git a/src/lib/ecore_x/xlib/ecore_x.c b/src/lib/ecore_x/xlib/ecore_x.c
index db1cfa4..2e84968 100644
--- a/src/lib/ecore_x/xlib/ecore_x.c
+++ b/src/lib/ecore_x/xlib/ecore_x.c
@@ -1124,46 +1124,34 @@ _ecore_x_key_mask_get(KeySym sym)
 {
    XModifierKeymap *mod;
    KeySym sym2;
-   int i, j;
+   int i, j, mask = 0;
    const int masks[8] =
-   {
-      ShiftMask, LockMask, ControlMask,
-      Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask
-   };
+     {
+        ShiftMask, LockMask, ControlMask,
+        Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask
+     };
 
    mod = XGetModifierMapping(_ecore_x_disp);
    if ((mod) && (mod->max_keypermod > 0))
-     for (i = 0; i < (8 * mod->max_keypermod); i++)
-       {
-          for (j = 0; j < 8; j++)
-            {
-               sym2 = _ecore_x_XKeycodeToKeysym(_ecore_x_disp,
-                                                mod->modifiermap[i], j);
-               if (sym2 != 0)
-                 break;
-            }
-          if (sym2 == sym)
-            {
-               int mask;
-
-               mask = masks[i / mod->max_keypermod];
-               if (mod->modifiermap)
-                 XFree(mod->modifiermap);
-
-               XFree(mod);
-               return mask;
-            }
-       }
-
+     {
+        for (i = 0; i < (8 * mod->max_keypermod); i++)
+          {
+             for (j = 0; j < 8; j++)
+               {
+                  sym2 = _ecore_x_XKeycodeToKeysym(_ecore_x_disp,
+                                                   mod->modifiermap[i], j);
+                  if (sym2 != 0)
+                  break;
+               }
+             if (sym2 == sym) mask = masks[i / mod->max_keypermod];
+          }
+     }
    if (mod)
      {
-        if (mod->modifiermap)
-          XFree(mod->modifiermap);
-
+        if (mod->modifiermap) XFree(mod->modifiermap);
         XFree(mod);
      }
-
-   return 0;
+   return mask;
 }
 
 /*****************************************************************************/

-- 


Reply via email to