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].