Hello,
This is a slightly improved version of my patch (in the case when all
windows are minimized).
A changelog entry might be:
Improvements to the switch panel (Alt+Tab panel):
- Escape quits the switch panel without raising a new window.
- If all windows are minimized, the first one in the list is selected,
instead of the second.
Regards,
Nicolas
--- src/cycling.c.old 2009-08-17 18:39:54.000000000 +0200
+++ src/cycling.c 2009-08-19 23:02:09.000000000 +0200
@@ -77,7 +77,7 @@
Bool somethingElse = False;
XEvent ev;
WSwitchPanel *swpanel = NULL;
- KeyCode leftKey, rightKey, homeKey, endKey, shiftLKey, shiftRKey;
+ KeyCode leftKey, rightKey, homeKey, endKey, shiftLKey, shiftRKey,
escapeKey;
if (!wwin)
return;
@@ -88,6 +88,7 @@
endKey = XKeysymToKeycode(dpy, XK_End);
shiftLKey = XKeysymToKeycode(dpy, XK_Shift_L);
shiftRKey = XKeysymToKeycode(dpy, XK_Shift_R);
+ escapeKey = XKeysymToKeycode(dpy, XK_Escape);
if (next)
hasModifier = (wKeyBindings[WKBD_FOCUSNEXT].modifier != 0);
@@ -110,7 +111,10 @@
oldFocused = wwin;
if (swpanel) {
- newFocused = wSwitchPanelSelectNext(swpanel, !next);
+ if (wwin->flags.mapped)
+ newFocused = wSwitchPanelSelectNext(swpanel, !next);
+ else
+ newFocused = wSwitchPanelSelectFirst(swpanel, False);
if (newFocused) {
wWindowFocus(newFocused, oldFocused);
oldFocused = newFocused;
@@ -173,9 +177,9 @@
}
}
}
- } else if (ev.xkey.keycode == homeKey || ev.xkey.keycode ==
endKey) {
+ } else if (ev.xkey.keycode == homeKey || ev.xkey.keycode ==
endKey || ev.xkey.keycode == escapeKey) {
if (swpanel) {
- newFocused = wSwitchPanelSelectFirst(swpanel,
ev.xkey.keycode != homeKey);
+ newFocused = wSwitchPanelSelectFirst(swpanel,
ev.xkey.keycode == endKey);
if (newFocused) {
wWindowFocus(newFocused, oldFocused);
oldFocused = newFocused;
@@ -186,6 +190,11 @@
}
}
}
+ if (ev.xkey.keycode == escapeKey) {
+ if (!wwin->flags.mapped)
+ newFocused = NULL;
+ done = True;
+ }
} else if (ev.xkey.keycode != shiftLKey && ev.xkey.keycode
!= shiftRKey) {
#ifdef DEBUG
printf("Got something else\n");
--
To unsubscribe, send mail to [email protected].