Dear daemonfishes,

After using evilwm for a decade, I'm quite impressed with cwm's
codebase and functionality.  (I just couldn't understand one
feature: what's the use of ptrmove* if you cannot click?  (...Mr.
Andersen?))

This tiny preliminary patch makes keyboard-based window resizing
honour size hints, which mouse-based one already does, to let you
resize xterm character by character.  Specifically:

- If resize increments are set, multiply the resize deltas by the
  increments.  I.e., resize* commands use (moveamount * incw) for
  width and the obvious for height, and bigresize* ten times
  that.
- If minimum size is set, don't resize below it.

Are you interested in something like this?  Would you modify the
behaviour somehow (e.g., with respect to moveamount)?  Is it OK
to use the same MAX() macro twice and let the compiler optimize
it out?

If you like thie modification, I can try to explain the new
behaviour in less technical prose and write a man page patch.

Vadik.

-- 
A friend is someone you call to help you move.  A real friend is
someone you call to help you move a body.
? cwm-incsize.diff
Index: kbfunc.c
===================================================================
RCS file: /cvs/xenocara/app/cwm/kbfunc.c,v
retrieving revision 1.118
diff -u -r1.118 kbfunc.c
--- kbfunc.c	16 Sep 2015 17:58:25 -0000	1.118
+++ kbfunc.c	8 Nov 2015 13:18:28 -0000
@@ -118,10 +118,10 @@
 		client_ptrwarp(cc);
 		break;
 	case CWM_RESIZE:
-		if ((cc->geom.w += mx) < 1)
-			cc->geom.w = 1;
-		if ((cc->geom.h += my) < 1)
-			cc->geom.h = 1;
+		if ((cc->geom.w += mx * cc->hint.incw) < MAX(1, cc->hint.minw))
+			cc->geom.w = MAX(1, cc->hint.minw);
+		if ((cc->geom.h += my * cc->hint.inch) < MAX(1, cc->hint.minh))
+			cc->geom.h = MAX(1, cc->hint.minh);
 		client_resize(cc, 1);
 
 		/* Make sure the pointer stays within the window. */

Reply via email to