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

Reply via email to