There's a bug in cwm that screws up alt-tab if you follow the set of events described in the next paragraph. To regain alt-tab functionality you need to jerk the mouse around to focus clients and then it usually comes back to its senses again.
So, start with a clean root window. Spawn two xterms, A and B, and place them side-by-side at the top of the screen. Focus B and vertically maximize it. Move ptr *near* bottom of B (below its original bottom y position). Alt-tab to focus A. Alt-tab to focus B. Vertically unmaximize B (ptr will now be over the root window) and alt-tab to A. Now alt-tab will not focus B and the ptr will be somewhere at the bottom of the root window. Can anyone else reproduce this? It took a while to figure out the sequence of events that triggered this problem and there might be other ways it can be triggered. The same happens if you maximize (fullscreen) or horizontally maximize the window and move the ptr. This patch fixes the problem for me. Index: client.c =================================================================== RCS file: /cvs/xenocara/app/cwm/client.c,v retrieving revision 1.76 diff -u -p -r1.76 client.c --- client.c 22 May 2010 22:10:31 -0000 1.76 +++ client.c 14 Jan 2011 17:27:39 -0000 @@ -273,6 +273,7 @@ client_maximize(struct client_ctx *cc) if (cc->flags & CLIENT_MAXIMIZED) { cc->geom = cc->savegeom; + cc->ptr.x = cc->ptr.y = -1; } else { if (!(cc->flags & (CLIENT_VMAXIMIZED | CLIENT_HMAXIMIZED))) cc->savegeom = cc->geom; @@ -312,6 +313,7 @@ client_vertmaximize(struct client_ctx *c if (cc->flags & CLIENT_VMAXIMIZED) { cc->geom = cc->savegeom; + cc->ptr.x = cc->ptr.y = -1; } else { if (!(cc->flags & (CLIENT_MAXIMIZED | CLIENT_HMAXIMIZED))) cc->savegeom = cc->geom; @@ -343,6 +345,7 @@ client_horizmaximize(struct client_ctx * if (cc->flags & CLIENT_HMAXIMIZED) { cc->geom = cc->savegeom; + cc->ptr.x = cc->ptr.y = -1; } else { if (!(cc->flags & (CLIENT_MAXIMIZED | CLIENT_VMAXIMIZED))) cc->savegeom = cc->geom;