only redraw the name/size box when the client resizes, not every time

there's movement; should slightly help with resize syncs.
This commit is contained in:
okan 2013-05-02 19:30:10 +00:00
parent 5acf6c147f
commit bb56bf4c4b

View File

@ -31,14 +31,12 @@
#include "calmwm.h" #include "calmwm.h"
static int mousefunc_sweep_calc(struct client_ctx *, int, int, int, int); static void mousefunc_sweep_calc(struct client_ctx *, int, int, int, int);
static void mousefunc_sweep_draw(struct client_ctx *); static void mousefunc_sweep_draw(struct client_ctx *);
static int static void
mousefunc_sweep_calc(struct client_ctx *cc, int x, int y, int mx, int my) mousefunc_sweep_calc(struct client_ctx *cc, int x, int y, int mx, int my)
{ {
int width = cc->geom.w, height = cc->geom.h;
cc->geom.w = abs(x - mx) - cc->bwidth; cc->geom.w = abs(x - mx) - cc->bwidth;
cc->geom.h = abs(y - my) - cc->bwidth; cc->geom.h = abs(y - my) - cc->bwidth;
@ -46,8 +44,6 @@ mousefunc_sweep_calc(struct client_ctx *cc, int x, int y, int mx, int my)
cc->geom.x = x <= mx ? x : x - cc->geom.w; cc->geom.x = x <= mx ? x : x - cc->geom.w;
cc->geom.y = y <= my ? y : y - cc->geom.h; cc->geom.y = y <= my ? y : y - cc->geom.h;
return (width != cc->geom.w || height != cc->geom.h);
} }
static void static void
@ -103,15 +99,14 @@ mousefunc_window_resize(struct client_ctx *cc, void *arg)
client_draw_border(cc); client_draw_border(cc);
break; break;
case MotionNotify: case MotionNotify:
if (mousefunc_sweep_calc(cc, x, y, mousefunc_sweep_calc(cc, x, y,
ev.xmotion.x_root, ev.xmotion.y_root)) ev.xmotion.x_root, ev.xmotion.y_root);
/* Recompute window output */
mousefunc_sweep_draw(cc);
/* don't resize more than 60 times / second */ /* don't resize more than 60 times / second */
if ((ev.xmotion.time - ltime) > (1000 / 60)) { if ((ev.xmotion.time - ltime) > (1000 / 60)) {
ltime = ev.xmotion.time; ltime = ev.xmotion.time;
client_resize(cc, 1); client_resize(cc, 1);
mousefunc_sweep_draw(cc);
} }
break; break;
case ButtonRelease: case ButtonRelease: