In the situation you kill a client and it happens the cursor lands in
the root window no window has focus.  Then you Alt-Tab to cycle and the
window which gets the pointer is not the last focused but the previous
one.

Index: client.c
===================================================================
RCS file: /cvs/xenocara/app/cwm/client.c,v
retrieving revision 1.255
diff -u -p -r1.255 client.c
--- client.c    7 Mar 2019 14:28:17 -0000       1.255
+++ client.c    1 May 2019 13:04:04 -0000
@@ -722,7 +722,16 @@ client_cycle(struct screen_ctx *sc, int 
                newcc->ptr.x = newcc->geom.w / 2;
                newcc->ptr.y = newcc->geom.h / 2;
        }
-       client_ptrwarp(newcc);
+
+       /* When no client is active warp pointer to last active */
+       if (oldcc->flags & (CLIENT_ACTIVE))
+               client_ptrwarp(newcc);
+       else if (oldcc->flags & (CLIENT_SKIP_CYCLE))
+               client_ptrwarp(newcc);
+       else {
+               client_raise(oldcc);
+               client_ptrwarp(oldcc);
+       }
 }
 
 static struct client_ctx *

Reply via email to