This scratch has been itching me for far too long and concerns the
funcionality behind those cwm(1) default bindings:

           CM-f            Toggle full-screen mode of current window.
           CM-m            Toggle maximization of current window.
           CM-equal        Toggle vertical maximization of current window.
           CMS-equal       Toggle horizontal maximization of current window.

Spawn a window, maximize it in any way, move the cursor to a window
border that is not on the screen's edge and unmaximize again...

While the window goes back the cursor stays at the screen's edge, i.e.
focus is lost to the underlaying window.

Moving, resizing, tiling or snapping windows in any way always moves the
cursor along iff needed, e.g. using

           MS-[hjkl]       Move window by a large amount; see cwmrc(5).

to move a small window from the center to the edge keeps the cursor
within window borders -- no matter what you do with the keyboard, focus
stays on that window.

Diff below does the same when toggling maximize/fullscreen.

Feedback? OK?



Index: client.c
===================================================================
RCS file: /cvs/xenocara/app/cwm/client.c,v
retrieving revision 1.263
diff -u -p -r1.263 client.c
--- client.c    16 Apr 2020 13:32:35 -0000      1.263
+++ client.c    8 Apr 2021 01:18:56 -0000
@@ -336,6 +336,7 @@ client_toggle_fullscreen(struct client_c
 resize:
        client_resize(cc, 0);
        xu_ewmh_set_net_wm_state(cc);
+       client_ptr_inbound(cc, 1);
 }
 
 void
@@ -376,6 +377,7 @@ client_toggle_maximize(struct client_ctx
 resize:
        client_resize(cc, 0);
        xu_ewmh_set_net_wm_state(cc);
+       client_ptr_inbound(cc, 1);
 }
 
 void
@@ -408,6 +410,7 @@ client_toggle_vmaximize(struct client_ct
 resize:
        client_resize(cc, 0);
        xu_ewmh_set_net_wm_state(cc);
+       client_ptr_inbound(cc, 1);
 }
 
 void
@@ -440,6 +443,7 @@ client_toggle_hmaximize(struct client_ct
 resize:
        client_resize(cc, 0);
        xu_ewmh_set_net_wm_state(cc);
+       client_ptr_inbound(cc, 1);
 }
 
 void

Reply via email to