From: Christophe CURIS <[email protected]>

---
 src/WindowMaker.h |  8 ++++++--
 src/cycling.c     |  2 +-
 src/event.c       |  2 +-
 src/main.c        |  3 +--
 src/rootmenu.c    |  2 +-
 src/startup.c     |  4 ++--
 src/window.c      | 12 ++++++------
 7 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/src/WindowMaker.h b/src/WindowMaker.h
index 27003d0..46ba189 100644
--- a/src/WindowMaker.h
+++ b/src/WindowMaker.h
@@ -613,6 +613,12 @@ extern struct wmaker_global_variables {
 
        /* Keyboard and shortcuts */
        struct {
+               /*
+                * Bit-mask to hide special key modifiers which we don't want to
+                * impact the shortcuts (typically: CapsLock, NumLock, 
ScrollLock)
+                */
+               unsigned int modifiers_mask;
+
                WMArray *windows[MAX_WINDOW_SHORTCUTS];
        } shortcut;
 
@@ -621,8 +627,6 @@ extern struct wmaker_global_variables {
 
 } w_global;
 
-extern unsigned int ValidModMask;
-
 /****** Notifications ******/
 extern const char WMNManaged[];
 extern const char WMNUnmanaged[];
diff --git a/src/cycling.c b/src/cycling.c
index 2542bfd..a1816dd 100644
--- a/src/cycling.c
+++ b/src/cycling.c
@@ -144,7 +144,7 @@ void StartWindozeCycle(WWindow *wwin, XEvent *event, Bool 
next, Bool class_only)
                            | PointerMotionMask | ButtonReleaseMask | 
EnterWindowMask, &ev);
 
                /* ignore CapsLock */
-               modifiers = ev.xkey.state & ValidModMask;
+               modifiers = ev.xkey.state & w_global.shortcut.modifiers_mask;
 
                if (!swpanel)
                        break;
diff --git a/src/event.c b/src/event.c
index 8629c6c..31a82a3 100644
--- a/src/event.c
+++ b/src/event.c
@@ -1311,7 +1311,7 @@ static void handleKeyPress(XEvent * event)
 #endif                         /*KEEP_XKB_LOCK_STATUS */
 
        /* ignore CapsLock */
-       modifiers = event->xkey.state & ValidModMask;
+       modifiers = event->xkey.state & w_global.shortcut.modifiers_mask;
 
        for (i = 0; i < WKBD_LAST; i++) {
                if (wKeyBindings[i].keycode == 0)
diff --git a/src/main.c b/src/main.c
index 21e9469..da6d0b6 100644
--- a/src/main.c
+++ b/src/main.c
@@ -72,8 +72,6 @@ Display *dpy;
 
 char *ProgName;
 
-unsigned int ValidModMask = 0xff;
-
 struct WPreferences wPreferences;
 
 WShortKey wKeyBindings[WKBD_LAST];
@@ -537,6 +535,7 @@ int main(int argc, char **argv)
        w_global.program.signal_state = WSTATE_NORMAL;
        w_global.timestamp.last_event = CurrentTime;
        w_global.timestamp.focus_change = CurrentTime;
+       w_global.shortcut.modifiers_mask = 0xff;
 
        /* setup common stuff for the monitor and wmaker itself */
        WMInitializeApplication("WindowMaker", &argc, argv);
diff --git a/src/rootmenu.c b/src/rootmenu.c
index 22bc21c..72ae878 100644
--- a/src/rootmenu.c
+++ b/src/rootmenu.c
@@ -350,7 +350,7 @@ Bool wRootMenuPerformShortcut(XEvent * event)
        int done = 0;
 
        /* ignore CapsLock */
-       modifiers = event->xkey.state & ValidModMask;
+       modifiers = event->xkey.state & w_global.shortcut.modifiers_mask;
 
        for (ptr = shortcutList; ptr != NULL; ptr = ptr->next) {
                if (ptr->keycode == 0 || ptr->menu->menu->screen_ptr != scr)
diff --git a/src/startup.c b/src/startup.c
index a15190d..c6438ea 100644
--- a/src/startup.c
+++ b/src/startup.c
@@ -418,13 +418,13 @@ void StartUp(Bool defaultScreenOnly)
        /*
         * Ignore CapsLock in modifiers
         */
-       ValidModMask = 0xff & ~LockMask;
+       w_global.shortcut.modifiers_mask = 0xff & ~LockMask;
 
        getOffendingModifiers();
        /*
         * Ignore NumLock and ScrollLock too
         */
-       ValidModMask &= ~(_NumLockMask | _ScrollLockMask);
+       w_global.shortcut.modifiers_mask &= ~(_NumLockMask | _ScrollLockMask);
 
        memset(&wKeyBindings, 0, sizeof(wKeyBindings));
 
diff --git a/src/window.c b/src/window.c
index d1d7a5d..7b3cda2 100644
--- a/src/window.c
+++ b/src/window.c
@@ -2680,7 +2680,7 @@ static void resizebarMouseDown(WCoreWindow *sender, void 
*data, XEvent *event)
        }
 #endif
 
-       event->xbutton.state &= ValidModMask;
+       event->xbutton.state &= w_global.shortcut.modifiers_mask;
 
        CloseWindowMenu(wwin->screen_ptr);
 
@@ -2714,7 +2714,7 @@ static void titlebarDblClick(WCoreWindow *sender, void 
*data, XEvent *event)
 {
        WWindow *wwin = data;
 
-       event->xbutton.state &= ValidModMask;
+       event->xbutton.state &= w_global.shortcut.modifiers_mask;
 
        if (event->xbutton.button == Button1) {
                if (event->xbutton.state == 0) {
@@ -2778,7 +2778,7 @@ static void frameMouseDown(WObjDescriptor *desc, XEvent 
*event)
                resize_height_increment = wPreferences.resize_increment;
        }
 
-       event->xbutton.state &= ValidModMask;
+       event->xbutton.state &= w_global.shortcut.modifiers_mask;
 
        CloseWindowMenu(wwin->screen_ptr);
 
@@ -2834,7 +2834,7 @@ static void titlebarMouseDown(WCoreWindow *sender, void 
*data, XEvent *event)
                wwarning(_("The NumLock, ScrollLock or similar key seems to be 
turned on. "
                           "Turn it off or some mouse actions and keyboard 
shortcuts will not work."));
 #endif
-       event->xbutton.state &= ValidModMask;
+       event->xbutton.state &= w_global.shortcut.modifiers_mask;
 
        CloseWindowMenu(wwin->screen_ptr);
 
@@ -2892,7 +2892,7 @@ static void windowCloseClick(WCoreWindow *sender, void 
*data, XEvent *event)
 {
        WWindow *wwin = data;
 
-       event->xbutton.state &= ValidModMask;
+       event->xbutton.state &= w_global.shortcut.modifiers_mask;
 
        CloseWindowMenu(wwin->screen_ptr);
 
@@ -2955,7 +2955,7 @@ static void windowIconifyClick(WCoreWindow *sender, void 
*data, XEvent *event)
 {
        WWindow *wwin = data;
 
-       event->xbutton.state &= ValidModMask;
+       event->xbutton.state &= w_global.shortcut.modifiers_mask;
 
        CloseWindowMenu(wwin->screen_ptr);
 
-- 
1.8.4.rc3


-- 
To unsubscribe, send mail to [email protected].

Reply via email to