From 898bfff36a8ce64146f1e1bc4452859dbda7595d Mon Sep 17 00:00:00 2001 From: oga Date: Wed, 16 Apr 2008 13:47:29 +0000 Subject: merge kbfunc_{ptrmove,client_{move,resize}} into one function that takes a flag, this code was almost identical... ok okan. --- calmwm.h | 16 +++++---- conf.c | 69 ++++++++++++++++++++++------------- kbfunc.c | 123 +++++++++++++++++++-------------------------------------------- 3 files changed, 90 insertions(+), 118 deletions(-) diff --git a/calmwm.h b/calmwm.h index 08ffac9..71018b5 100644 --- a/calmwm.h +++ b/calmwm.h @@ -205,10 +205,14 @@ struct xevent { TAILQ_HEAD(xevent_q, xevent); -#define CWM_BIGMOVE 0x1000 -enum directions { - CWM_UP = 0, CWM_DOWN, CWM_LEFT, CWM_RIGHT, -}; +#define CWM_MOVE 0x01 +#define CWM_RESIZE 0x02 +#define CWM_PTRMOVE 0x04 +#define CWM_BIGMOVE 0x08 +#define CWM_UP 0x10 +#define CWM_DOWN 0x20 +#define CWM_LEFT 0x40 +#define CWM_RIGHT 0x80 /* * Match a window. @@ -447,11 +451,9 @@ void kbfunc_client_nogroup(struct client_ctx *, void *); void kbfunc_client_maximize(struct client_ctx *, void *); void kbfunc_client_vmaximize(struct client_ctx *, void *); void kbfunc_quit_wm(struct client_ctx *, void *); -void kbfunc_client_move(struct client_ctx *, void *); -void kbfunc_client_resize(struct client_ctx *, void *); +void kbfunc_moveresize(struct client_ctx *, void *); void kbfunc_menu_search(struct client_ctx *, void *); void kbfunc_exec(struct client_ctx *, void *); -void kbfunc_ptrmove(struct client_ctx *, void *); void kbfunc_ssh(struct client_ctx *, void *); void kbfunc_term(struct client_ctx *, void *); void kbfunc_lock(struct client_ctx *, void *); diff --git a/conf.c b/conf.c index 4369af3..ad1aadc 100644 --- a/conf.c +++ b/conf.c @@ -238,14 +238,6 @@ struct { { "rcycle", kbfunc_client_rcycle, 0, 0 }, { "label", kbfunc_client_label, KBFLAG_NEEDCLIENT, 0 }, { "delete", kbfunc_client_delete, KBFLAG_NEEDCLIENT, 0 }, - { "ptrmoveup", kbfunc_ptrmove, 0, (void *)CWM_UP }, - { "ptrmovedown", kbfunc_ptrmove, 0, (void *)CWM_DOWN }, - { "ptrmoveleft", kbfunc_ptrmove, 0, (void *)CWM_LEFT }, - { "ptrmoveright", kbfunc_ptrmove, 0, (void *)CWM_RIGHT }, - { "bigptrmoveup", kbfunc_ptrmove, 0, (void *)(CWM_UP|CWM_BIGMOVE) }, - { "bigptrmovedown", kbfunc_ptrmove, 0, (void *)(CWM_DOWN|CWM_BIGMOVE) }, - { "bigptrmoveleft", kbfunc_ptrmove, 0, (void *)(CWM_LEFT|CWM_BIGMOVE) }, - { "bigptrmoveright", kbfunc_ptrmove, 0, (void *)(CWM_RIGHT|CWM_BIGMOVE) }, { "group1", kbfunc_client_group, 0, (void *)1 }, { "group2", kbfunc_client_group, 0, (void *)2 }, { "group3", kbfunc_client_group, 0, (void *)3 }, @@ -266,22 +258,51 @@ struct { { "ssh", kbfunc_ssh, 0, 0 }, { "terminal", kbfunc_term, 0, 0 }, { "lock", kbfunc_lock, 0, 0 }, - { "moveup", kbfunc_client_move, KBFLAG_NEEDCLIENT, (void *)CWM_UP }, - { "movedown", kbfunc_client_move, KBFLAG_NEEDCLIENT, (void *)CWM_DOWN }, - { "moveright", kbfunc_client_move, KBFLAG_NEEDCLIENT, (void *)CWM_RIGHT }, - { "moveleft", kbfunc_client_move, KBFLAG_NEEDCLIENT, (void *)CWM_LEFT }, - { "bigmoveup", kbfunc_client_move, KBFLAG_NEEDCLIENT, (void *)(CWM_UP|CWM_BIGMOVE) }, - { "bigmovedown", kbfunc_client_move, KBFLAG_NEEDCLIENT, (void *)(CWM_DOWN|CWM_BIGMOVE) }, - { "bigmoveright", kbfunc_client_move, KBFLAG_NEEDCLIENT, (void *)(CWM_RIGHT|CWM_BIGMOVE) }, - { "bigmoveleft", kbfunc_client_move, KBFLAG_NEEDCLIENT, (void *)(CWM_LEFT|CWM_BIGMOVE) }, - { "resizeup", kbfunc_client_resize, KBFLAG_NEEDCLIENT, (void *)(CWM_UP) }, - { "resizedown", kbfunc_client_resize, KBFLAG_NEEDCLIENT, (void *)CWM_DOWN }, - { "resizeright", kbfunc_client_resize, KBFLAG_NEEDCLIENT, (void *)CWM_RIGHT }, - { "resizeleft", kbfunc_client_resize, KBFLAG_NEEDCLIENT, (void *)CWM_LEFT }, - { "bigresizeup", kbfunc_client_resize, KBFLAG_NEEDCLIENT, (void *)(CWM_UP|CWM_BIGMOVE) }, - { "bigresizedown", kbfunc_client_resize, KBFLAG_NEEDCLIENT, (void *)(CWM_DOWN|CWM_BIGMOVE) }, - { "bigresizeright", kbfunc_client_resize, KBFLAG_NEEDCLIENT, (void *)(CWM_RIGHT|CWM_BIGMOVE) }, - { "bigresizeleft", kbfunc_client_resize, KBFLAG_NEEDCLIENT, (void *)(CWM_LEFT|CWM_BIGMOVE) }, + { "moveup", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_UP|CWM_MOVE) }, + { "movedown", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_DOWN|CWM_MOVE) }, + { "moveright", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_RIGHT|CWM_MOVE) }, + { "moveleft", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_LEFT|CWM_MOVE) }, + { "bigmoveup", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_UP|CWM_MOVE|CWM_BIGMOVE) }, + { "bigmovedown", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_DOWN|CWM_MOVE|CWM_BIGMOVE) }, + { "bigmoveright", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_RIGHT|CWM_MOVE|CWM_BIGMOVE) }, + { "bigmoveleft", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_LEFT|CWM_MOVE|CWM_BIGMOVE) }, + { "resizeup", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_UP|CWM_RESIZE) }, + { "resizedown", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_DOWN|CWM_RESIZE) }, + { "resizeright", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_RIGHT|CWM_RESIZE) }, + { "resizeleft", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_LEFT|CWM_RESIZE) }, + { "bigresizeup", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_UP|CWM_RESIZE|CWM_BIGMOVE) }, + { "bigresizedown", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_DOWN|CWM_RESIZE|CWM_BIGMOVE) }, + { "bigresizeright", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_RIGHT|CWM_RESIZE|CWM_BIGMOVE) }, + { "bigresizeleft", kbfunc_moveresize, KBFLAG_NEEDCLIENT, + (void *)(CWM_LEFT|CWM_RESIZE|CWM_BIGMOVE) }, + { "ptrmoveup", kbfunc_moveresize, 0, (void *)(CWM_UP|CWM_PTRMOVE) }, + { "ptrmovedown", kbfunc_moveresize, 0, (void *)(CWM_DOWN|CWM_PTRMOVE) }, + { "ptrmoveleft", kbfunc_moveresize, 0, (void *)(CWM_LEFT|CWM_PTRMOVE) }, + { "ptrmoveright", kbfunc_moveresize, 0, + (void *)(CWM_RIGHT|CWM_PTRMOVE) }, + { "bigptrmoveup", kbfunc_moveresize, 0, + (void *)(CWM_UP|CWM_PTRMOVE|CWM_BIGMOVE) }, + { "bigptrmovedown", kbfunc_moveresize, 0, + (void *)(CWM_DOWN|CWM_PTRMOVE|CWM_BIGMOVE) }, + { "bigptrmoveleft", kbfunc_moveresize, 0, + (void *)(CWM_LEFT|CWM_PTRMOVE|CWM_BIGMOVE) }, + { "bigptrmoveright", kbfunc_moveresize, 0, + (void *)(CWM_RIGHT|CWM_PTRMOVE|CWM_BIGMOVE) }, { NULL, NULL, 0, 0}, }; diff --git a/kbfunc.c b/kbfunc.c index a512137..a6e0da5 100644 --- a/kbfunc.c +++ b/kbfunc.c @@ -41,9 +41,12 @@ kbfunc_client_raise(struct client_ctx *cc, void *arg) client_raise(cc); } +#define typemask (CWM_MOVE | CWM_RESIZE | CWM_PTRMOVE) +#define movemask (CWM_UP | CWM_DOWN | CWM_LEFT | CWM_RIGHT) void -kbfunc_client_move(struct client_ctx *cc, void *arg) +kbfunc_moveresize(struct client_ctx *cc, void *arg) { + struct screen_ctx *sc = screen_current(); int x,y,flags,amt; u_int mx,my; @@ -57,47 +60,7 @@ kbfunc_client_move(struct client_ctx *cc, void *arg) amt = amt*10; } - switch (flags) { - case CWM_UP: - my -= amt; - break; - case CWM_DOWN: - my += amt; - break; - case CWM_RIGHT: - mx += amt; - break; - case CWM_LEFT: - mx -= amt; - break; - } - - cc->geom.y += my; - cc->geom.x += mx; - client_move(cc); - xu_ptr_getpos(cc->pwin, &x, &y); - cc->ptr.y = y + my; - cc->ptr.x = x + mx; - client_ptrwarp(cc); -} - -void -kbfunc_client_resize(struct client_ctx *cc, void *arg) -{ - int flags,mx,my; - u_int amt; - - mx = my = 0; - - flags = (int)arg; - amt = MOVE_AMOUNT; - - if (flags & CWM_BIGMOVE) { - flags -= CWM_BIGMOVE; - amt = amt*10; - } - - switch (flags) { + switch (flags & movemask) { case CWM_UP: my -= amt; break; @@ -111,56 +74,42 @@ kbfunc_client_resize(struct client_ctx *cc, void *arg) mx -= amt; break; } - - cc->geom.height += my; - cc->geom.width += mx; - client_resize(cc); - - /* - * Moving the cursor while resizing is problematic. Just place - * it in the middle of the window. - */ - cc->ptr.x = -1; - cc->ptr.y = -1; - client_ptrwarp(cc); -} - -void -kbfunc_ptrmove(struct client_ctx *cc, void *arg) -{ - int px,py,mx,my,flags,amt; - struct screen_ctx *sc = screen_current(); - my = mx = 0; - - flags = (int)arg; - amt = MOVE_AMOUNT; - - if (flags & CWM_BIGMOVE) { - flags -= CWM_BIGMOVE; - amt = amt * 10; - } - switch (flags) { - case CWM_UP: - my -= amt; - break; - case CWM_DOWN: - my += amt; + switch (flags & typemask) { + case CWM_MOVE: + cc->geom.y += my; + cc->geom.x += mx; + client_move(cc); + xu_ptr_getpos(cc->pwin, &x, &y); + cc->ptr.y = y + my; + cc->ptr.x = x + mx; + client_ptrwarp(cc); break; - case CWM_RIGHT: - mx += amt; + case CWM_RESIZE: + cc->geom.height += my; + cc->geom.width += mx; + client_resize(cc); + + /* + * Moving the cursor while resizing is problematic. Just place + * it in the middle of the window. + */ + cc->ptr.x = -1; + cc->ptr.y = -1; + client_ptrwarp(cc); break; - case CWM_LEFT: - mx -= amt; + case CWM_PTRMOVE: + if (cc) { + xu_ptr_getpos(cc->pwin, &x, &y); + xu_ptr_setpos(cc->pwin, x + mx, y + my); + } else { + xu_ptr_getpos(sc->rootwin, &x, &y); + xu_ptr_setpos(sc->rootwin, x + mx, y + my); + } break; + default: + warnx("invalid flags passed to kbfunc_client_moveresize"); } - if (cc) { - xu_ptr_getpos(cc->pwin, &px, &py); - xu_ptr_setpos(cc->pwin, px + mx, py + my); - } else { - xu_ptr_getpos(sc->rootwin, &px, &py); - xu_ptr_setpos(sc->rootwin, px + mx, py + my); - } } void -- cgit 1.4.1