aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calmwm.h18
-rw-r--r--conf.c71
-rw-r--r--kbfunc.c125
3 files changed, 93 insertions, 121 deletions
diff --git a/calmwm.h b/calmwm.h
index f22acc1..e38fd3d 100644
--- a/calmwm.h
+++ b/calmwm.h
@@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $Id: calmwm.h,v 1.36 2008/04/16 13:40:34 oga Exp $
+ * $Id: calmwm.h,v 1.37 2008/04/16 13:47:29 oga Exp $
*/
#ifndef _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 8ae68e9..119b147 100644
--- a/conf.c
+++ b/conf.c
@@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $Id: conf.c,v 1.27 2008/04/16 13:38:09 oga Exp $
+ * $Id: conf.c,v 1.28 2008/04/16 13:47:29 oga Exp $
*/
#include "headers.h"
@@ -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 44d1ac6..be94be3 100644
--- a/kbfunc.c
+++ b/kbfunc.c
@@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $Id: kbfunc.c,v 1.21 2008/04/15 21:20:56 oga Exp $
+ * $Id: kbfunc.c,v 1.22 2008/04/16 13:47:29 oga Exp $
*/
#include <paths.h>
@@ -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