Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        E.h aclass.c grabs.c grabs.h setup.c 


Log Message:
Move modifier mask stuff around. Avoid redundant key/button grab/ungrabs.

===================================================================
RCS file: /cvs/e/e16/e/src/E.h,v
retrieving revision 1.576
retrieving revision 1.577
diff -u -3 -r1.576 -r1.577
--- E.h 28 Jan 2007 04:59:45 -0000      1.576
+++ E.h 1 Feb 2007 01:23:40 -0000       1.577
@@ -475,8 +475,7 @@
    } locale;
    struct
    {
-      unsigned int        numlock;
-      unsigned int        scrollock;
+      unsigned int        mod_key_mask;
       unsigned int        mod_combos[8];
    } masks;
    struct
===================================================================
RCS file: /cvs/e/e16/e/src/aclass.c,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -3 -r1.39 -r1.40
--- aclass.c    17 Jan 2007 01:10:42 -0000      1.39
+++ aclass.c    1 Feb 2007 01:23:40 -0000       1.40
@@ -1010,9 +1010,7 @@
 
    key = type = button = modifiers = mouse = 0;
 
-   mask =
-      (ShiftMask | ControlMask | Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask |
-       Mod5Mask) & (~(Mode.masks.numlock | Mode.masks.scrollock | LockMask));
+   mask = Mode.masks.mod_key_mask;
 
    switch (ev->type)
      {
@@ -1484,35 +1482,11 @@
                      && (aa->event != EVENT_MOUSE_UP)))
           continue;
 
-       mod = 0;
-       button = 0;
-
-       if (aa->anymodifier)
-          mod = AnyModifier;
-       else
-          mod = aa->modifiers;
-
-       if (aa->anybutton)
-          button = AnyButton;
-       else
-          button = aa->button;
-
+       mod = (aa->anymodifier) ? AnyModifier : aa->modifiers;
+       button = (aa->anybutton) ? AnyButton : aa->button;
        mask = ButtonPressMask | ButtonReleaseMask;
 
-       if (mod == AnyModifier)
-         {
-            GrabButtonSet(button, mod, EoGetWin(ewin), mask, ECSR_PGRAB, 1);
-         }
-       else
-         {
-            int                 i;
-
-            for (i = 0; i < 8; i++)
-              {
-                 GrabButtonSet(button, mod | Mode.masks.mod_combos[i],
-                               EoGetWin(ewin), mask, ECSR_PGRAB, 1);
-              }
-         }
+       GrabButtonSet(button, mod, EoGetWin(ewin), mask, ECSR_PGRAB, 1);
      }
 }
 
@@ -1536,33 +1510,10 @@
                      && (aa->event != EVENT_MOUSE_UP)))
           continue;
 
-       mod = 0;
-       button = 0;
-
-       if (aa->anymodifier)
-          mod = AnyModifier;
-       else
-          mod = aa->modifiers;
-
-       if (aa->anybutton)
-          button = AnyButton;
-       else
-          button = aa->button;
+       mod = (aa->anymodifier) ? AnyModifier : aa->modifiers;
+       button = (aa->anybutton) ? AnyButton : aa->button;
 
-       if (mod == AnyModifier)
-         {
-            GrabButtonRelease(button, mod, EoGetWin(ewin));
-         }
-       else
-         {
-            int                 i;
-
-            for (i = 0; i < 8; i++)
-              {
-                 GrabButtonRelease(button, mod | Mode.masks.mod_combos[i],
-                                   EoGetWin(ewin));
-              }
-         }
+       GrabButtonRelease(button, mod, EoGetWin(ewin));
      }
 }
 
@@ -1574,22 +1525,9 @@
    if (!aa->key)
       return;
 
-   mod = aa->modifiers;
-   if (aa->anymodifier)
-     {
-       mod = AnyModifier;
-       XGrabKey(disp, aa->key, mod, VRoot.xwin, False, GrabModeAsync,
-                GrabModeSync);
-     }
-   else
-     {
-       int                 i;
+   mod = (aa->anymodifier) ? AnyModifier : aa->modifiers;
 
-       /* grab the key even if locks are on or not */
-       for (i = 0; i < 8; i++)
-          XGrabKey(disp, aa->key, mod | Mode.masks.mod_combos[i], VRoot.xwin,
-                   False, GrabModeAsync, GrabModeSync);
-     }
+   GrabKeySet(aa->key, mod, VRoot.win);
 }
 
 static void
@@ -1600,19 +1538,7 @@
    if (!aa->key)
       return;
 
-   mod = aa->modifiers;
-   if (aa->anymodifier)
-     {
-       mod = AnyModifier;
-       XUngrabKey(disp, aa->key, mod, VRoot.xwin);
-     }
-   else
-     {
-       int                 i;
+   mod = (aa->anymodifier) ? AnyModifier : aa->modifiers;
 
-       /* ungrab the key even if locks are on or not */
-       for (i = 0; i < 8; i++)
-          XUngrabKey(disp, aa->key, mod | Mode.masks.mod_combos[i],
-                     VRoot.xwin);
-     }
+   GrabKeyRelease(aa->key, mod, VRoot.win);
 }
===================================================================
RCS file: /cvs/e/e16/e/src/grabs.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -3 -r1.30 -r1.31
--- grabs.c     13 Jan 2007 19:14:27 -0000      1.30
+++ grabs.c     1 Feb 2007 01:23:40 -0000       1.31
@@ -95,14 +95,86 @@
    int                 pointer_mode = GrabModeSync;
    int                 keyboard_mode = GrabModeAsync;
    Window              confine_to = (confine) ? WinGetXwin(win) : None;
+   int                 i;
 
-   XGrabButton(disp, button, modifiers, WinGetXwin(win), owner_events,
-              event_mask, pointer_mode, keyboard_mode, confine_to,
-              ECsrGet(csr));
+   if (modifiers == AnyModifier)
+     {
+       XGrabButton(disp, button, modifiers,
+                   WinGetXwin(win), owner_events, event_mask, pointer_mode,
+                   keyboard_mode, confine_to, ECsrGet(csr));
+       return;
+     }
+
+   for (i = 0; i < 8; i++)
+     {
+       if (i && !Mode.masks.mod_combos[i])
+          continue;
+       XGrabButton(disp, button, modifiers | Mode.masks.mod_combos[i],
+                   WinGetXwin(win), owner_events, event_mask, pointer_mode,
+                   keyboard_mode, confine_to, ECsrGet(csr));
+     }
 }
 
 void
 GrabButtonRelease(unsigned int button, unsigned int modifiers, Win win)
 {
-   XUngrabButton(disp, button, modifiers, WinGetXwin(win));
+   int                 i;
+
+   if (modifiers == AnyModifier)
+     {
+       XUngrabButton(disp, button, modifiers, WinGetXwin(win));
+       return;
+     }
+
+   for (i = 0; i < 8; i++)
+     {
+       if (i && !Mode.masks.mod_combos[i])
+          continue;
+       XUngrabButton(disp, button, modifiers | Mode.masks.mod_combos[i],
+                     WinGetXwin(win));
+     }
+}
+
+void
+GrabKeySet(unsigned int key, unsigned int modifiers, Win win)
+{
+   Bool                owner_events = False;
+   int                 pointer_mode = GrabModeAsync;
+   int                 keyboard_mode = GrabModeSync;
+   int                 i;
+
+   if (modifiers == AnyModifier)
+     {
+       XGrabKey(disp, key, modifiers, WinGetXwin(win), owner_events,
+                pointer_mode, keyboard_mode);
+       return;
+     }
+
+   for (i = 0; i < 8; i++)
+     {
+       if (i && !Mode.masks.mod_combos[i])
+          continue;
+       XGrabKey(disp, key, modifiers | Mode.masks.mod_combos[i],
+                WinGetXwin(win), owner_events, pointer_mode, keyboard_mode);
+     }
+}
+
+void
+GrabKeyRelease(unsigned int key, unsigned int modifiers, Win win)
+{
+   int                 i;
+
+   if (modifiers == AnyModifier)
+     {
+       XUngrabKey(disp, key, modifiers, WinGetXwin(win));
+       return;
+     }
+
+   for (i = 0; i < 8; i++)
+     {
+       if (i && !Mode.masks.mod_combos[i])
+          continue;
+       XUngrabKey(disp, key, modifiers | Mode.masks.mod_combos[i],
+                  WinGetXwin(win));
+     }
 }
===================================================================
RCS file: /cvs/e/e16/e/src/grabs.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- grabs.h     13 Jan 2007 19:14:27 -0000      1.2
+++ grabs.h     1 Feb 2007 01:23:40 -0000       1.3
@@ -35,5 +35,9 @@
                                  unsigned int csr, int confine);
 void                GrabButtonRelease(unsigned int button,
                                      unsigned int modifiers, Win win);
+void                GrabKeySet(unsigned int key, unsigned int modifiers,
+                              Win win);
+void                GrabKeyRelease(unsigned int key, unsigned int modifiers,
+                                  Win win);
 
 #endif /* _GRABS_H_ */
===================================================================
RCS file: /cvs/e/e16/e/src/setup.c,v
retrieving revision 1.182
retrieving revision 1.183
diff -u -3 -r1.182 -r1.183
--- setup.c     17 Jan 2007 01:10:43 -0000      1.182
+++ setup.c     1 Feb 2007 01:23:40 -0000       1.183
@@ -264,12 +264,14 @@
    {
       XModifierKeymap    *mod;
       KeyCode             nl, sl;
+      unsigned int        numlock, scrollock;
       int                 i;
       int                 masks[8] = {
         ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask,
         Mod4Mask, Mod5Mask
       };
 
+      numlock = scrollock = 0;
       mod = XGetModifierMapping(disp);
       nl = XKeysymToKeycode(disp, XK_Num_Lock);
       sl = XKeysymToKeycode(disp, XK_Scroll_Lock);
@@ -278,20 +280,32 @@
           for (i = 0; i < (8 * mod->max_keypermod); i++)
             {
                if ((nl) && (mod->modifiermap[i] == nl))
-                  Mode.masks.numlock = masks[i / mod->max_keypermod];
+                  numlock = masks[i / mod->max_keypermod];
                else if ((sl) && (mod->modifiermap[i] == sl))
-                  Mode.masks.scrollock = masks[i / mod->max_keypermod];
+                  scrollock = masks[i / mod->max_keypermod];
             }
        }
       Mode.masks.mod_combos[0] = 0;
       Mode.masks.mod_combos[1] = LockMask;
-      Mode.masks.mod_combos[2] = Mode.masks.numlock;
-      Mode.masks.mod_combos[3] = Mode.masks.scrollock;
-      Mode.masks.mod_combos[4] = Mode.masks.numlock | Mode.masks.scrollock;
-      Mode.masks.mod_combos[5] = LockMask | Mode.masks.numlock;
-      Mode.masks.mod_combos[6] = LockMask | Mode.masks.scrollock;
-      Mode.masks.mod_combos[7] = LockMask |
-        Mode.masks.numlock | Mode.masks.scrollock;
+      if (numlock)
+       {
+          Mode.masks.mod_combos[2] = numlock;
+          Mode.masks.mod_combos[5] = LockMask | numlock;
+       }
+      if (scrollock)
+       {
+          Mode.masks.mod_combos[3] = scrollock;
+          Mode.masks.mod_combos[6] = LockMask | scrollock;
+       }
+      if (numlock && scrollock)
+       {
+          Mode.masks.mod_combos[4] = numlock | scrollock;
+          Mode.masks.mod_combos[7] = LockMask | numlock | scrollock;
+       }
+
+      Mode.masks.mod_key_mask =
+        (ShiftMask | ControlMask | Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask |
+         Mod5Mask) & (~(numlock | scrollock | LockMask));
 
       if (mod)
         XFreeModifiermap(mod);



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to