summary refs log tree commit diff
diff options
context:
space:
mode:
authorokan <okan>2016-11-15 00:07:03 +0000
committerokan <okan>2016-11-15 00:07:03 +0000
commit62dc5ae1320c833d1d6a8354543cada41a2bc4f3 (patch)
tree212f413c6baafff5e10b89fa8a8f7ddd7002c138
parented22d7a944879a2b296a53e40fbce2b86339ce9f (diff)
downloadcwm-62dc5ae1320c833d1d6a8354543cada41a2bc4f3.tar.gz
cwm-62dc5ae1320c833d1d6a8354543cada41a2bc4f3.tar.xz
cwm-62dc5ae1320c833d1d6a8354543cada41a2bc4f3.zip
Add a wrapper based upon xevent handlers around client move/resize for key and
mouse bindings.
-rw-r--r--calmwm.h2
-rw-r--r--conf.c4
-rw-r--r--kbfunc.c22
3 files changed, 26 insertions, 2 deletions
diff --git a/calmwm.h b/calmwm.h
index e7c679f..d430b51 100644
--- a/calmwm.h
+++ b/calmwm.h
@@ -463,7 +463,9 @@ void			 screen_assert_clients_within(struct screen_ctx *);
 void			 kbfunc_cwm_status(void *, union arg *, enum xev);
 void			 kbfunc_ptrmove(void *, union arg *, enum xev);
 void			 kbfunc_client_move(void *, union arg *, enum xev);
+void			 kbfunc_client_move_key(void *, union arg *, enum xev);
 void			 kbfunc_client_resize(void *, union arg *, enum xev);
+void			 kbfunc_client_resize_key(void *, union arg *, enum xev);
 void			 kbfunc_client_delete(void *, union arg *, enum xev);
 void			 kbfunc_client_lower(void *, union arg *, enum xev);
 void			 kbfunc_client_raise(void *, union arg *, enum xev);
diff --git a/conf.c b/conf.c
index 827e88f..f12a7fd 100644
--- a/conf.c
+++ b/conf.c
@@ -177,8 +177,8 @@ static const struct {
 	{ "window_lower", kbfunc_client_lower, CWM_CONTEXT_CC, {0} },
 	{ "window_raise", kbfunc_client_raise, CWM_CONTEXT_CC, {0} },
 	{ "window_hide", kbfunc_client_hide, CWM_CONTEXT_CC, {0} },
-	{ "window_move", mousefunc_client_move, CWM_CONTEXT_CC, {0} },
-	{ "window_resize", mousefunc_client_resize, CWM_CONTEXT_CC, {0} },
+	{ "window_move", kbfunc_client_move, CWM_CONTEXT_CC, {0} },
+	{ "window_resize", kbfunc_client_resize, CWM_CONTEXT_CC, {0} },
 	{ "window_grouptoggle", kbfunc_client_toggle_group, CWM_CONTEXT_CC, {0} },
 	{ "menu_group", kbfunc_menu_group, CWM_CONTEXT_SC, {0} },
 	{ "menu_unhide", kbfunc_menu_client, CWM_CONTEXT_SC, {0} },
diff --git a/kbfunc.c b/kbfunc.c
index 8edea79..40bd84e 100644
--- a/kbfunc.c
+++ b/kbfunc.c
@@ -86,6 +86,17 @@ kbfunc_ptrmove(void *ctx, union arg *arg, enum xev xev)
 void
 kbfunc_client_move(void *ctx, union arg *arg, enum xev xev)
 {
+	int			 m = (xev == CWM_XEV_BTN);
+
+	if (m)
+		mousefunc_client_move(ctx, arg, xev);
+	else
+		kbfunc_client_move_key(ctx, arg, xev);
+}
+
+void
+kbfunc_client_move_key(void *ctx, union arg *arg, enum xev xev)
+{
 	struct client_ctx	*cc = ctx;
 	struct screen_ctx	*sc = cc->sc;
 	struct geom		 area;
@@ -140,6 +151,17 @@ kbfunc_client_move(void *ctx, union arg *arg, enum xev xev)
 void
 kbfunc_client_resize(void *ctx, union arg *arg, enum xev xev)
 {
+	int			 m = (xev == CWM_XEV_BTN);
+
+	if (m)
+		mousefunc_client_resize(ctx, arg, xev);
+	else
+		kbfunc_client_resize_key(ctx, arg, xev);
+}
+
+void
+kbfunc_client_resize_key(void *ctx, union arg *arg, enum xev xev)
+{
 	struct client_ctx	*cc = ctx;
 	unsigned int		 mx = 0, my = 0;
 	int			 amt = 1;