Here's something I made earlier. cwm-resize-new.patch: Resize new clients. This is needed if client_placecalc() decides to change size of the new window.
cwm-ptrwarp-inbound.patch: Ensure pointer is within warped-to window. This is relevant after a window shrinks (e.g., is unmaximized) and another client becomes active. Yours, Vadik. -- Signals don't kill processes. Processes kill processes.
Index: client.c =================================================================== RCS file: /cvs/xenocara/app/cwm/client.c,v retrieving revision 1.214 diff -u -r1.214 client.c --- client.c 12 Nov 2015 18:33:30 -0000 1.214 +++ client.c 14 Dec 2015 21:29:37 -0000 @@ -97,7 +97,7 @@ if (wattr.map_state != IsViewable) { client_placecalc(cc); - client_move(cc); + client_resize(cc, 0); if ((cc->wmh) && (cc->wmh->flags & StateHint)) client_set_wm_state(cc, cc->wmh->initial_state); } else {
Index: client.c =================================================================== RCS file: /cvs/xenocara/app/cwm/client.c,v retrieving revision 1.214 diff -u -r1.214 client.c --- client.c 12 Nov 2015 18:33:30 -0000 1.214 +++ client.c 29 Dec 2015 03:03:13 -0000 @@ -486,7 +486,7 @@ { int x = cc->ptr.x, y = cc->ptr.y; - if (x == -1 || y == -1) { + if (!client_inbound(cc, x, y)) { x = cc->geom.w / 2; y = cc->geom.h / 2; }