On Wed, 28 Sep 2016, Okan Demirmen wrote:
> Hi,
>
> Curious what the reaction might be if I removed the little geometry
> window in the top-left corner for mouse/pointer based window resizes.
I don't know about anyone else, but I use this for one thing only:
making sure my terminal windows are still exactly 80 columns wide after
resizing them to be longer (or going back to 80 after making one wider
temporarily). Any other window I don't care about the exact size.
I suppose I could use stty and the keyboard resizing options if this
went away, but it seems more natural to move and resize windows with the
mouse.
>
> We currently print the x/y dimensions only for mouse based actions; we
> don't for kbd, nor do we do anything with mouse/kbd window moves (such
> as printing the x/y coordinates, etc). So why have mouse-resize be
> different? Thus, the below crudely removes it.
>
> One reason to remove it is for simplicity; this is the only place we
> need to hold and carry around menuwin and a drawable. If we abused
> menuwin/drawable in other locations but the actual menu'ing subsystem,
> then ok. Alternatively, can create/destroy each time for a mouse-resize,
> but likely not worth it, maybe it should stay...
So make it display on movement too? I'm not sure how useful it is, but
it adds symmetry.
Martin
Index: mousefunc.c
===================================================================
RCS file: /cvs/xenocara/app/cwm/mousefunc.c,v
retrieving revision 1.107
diff -u -p -r1.107 mousefunc.c
--- mousefunc.c 28 Sep 2016 17:06:33 -0000 1.107
+++ mousefunc.c 28 Sep 2016 18:33:12 -0000
@@ -32,16 +32,17 @@
#include "calmwm.h"
-static void mousefunc_sweep_draw(struct client_ctx *);
+static void mousefunc_sweep_draw(struct client_ctx *, int move);
static void
-mousefunc_sweep_draw(struct client_ctx *cc)
+mousefunc_sweep_draw(struct client_ctx *cc, int move)
{
struct screen_ctx *sc = cc->sc;
char s[14]; /* fits " nnnn x nnnn \0" */
XGlyphInfo extents;
- (void)snprintf(s, sizeof(s), " %4d x %-4d ", cc->dim.w, cc->dim.h);
+ (void)snprintf(s, sizeof(s), " %4d x %-4d ",
+ move ? cc->geom.x : cc->dim.w, move ? cc->geom.y : cc->dim.h);
XftTextExtentsUtf8(X_Dpy, sc->xftfont, (const FcChar8*)s,
strlen(s), &extents);
@@ -89,7 +90,7 @@ mousefunc_client_resize(struct client_ct
cc->geom.h = ev.xmotion.y;
client_applysizehints(cc);
client_resize(cc, 1);
- mousefunc_sweep_draw(cc);
+ mousefunc_sweep_draw(cc, 0);
break;
case ButtonRelease:
client_resize(cc, 1);
@@ -151,9 +152,12 @@ mousefunc_client_move(struct client_ctx
cc->geom.y + cc->geom.h + (cc->bwidth * 2),
area.y, area.y + area.h, sc->snapdist);
client_move(cc);
+ mousefunc_sweep_draw(cc, 1);
break;
case ButtonRelease:
client_move(cc);
+ XUnmapWindow(X_Dpy, sc->menuwin);
+ XReparentWindow(X_Dpy, sc->menuwin, sc->rootwin, 0, 0);
xu_ptr_ungrab();
return;
}