summary refs log tree commit diff
diff options
context:
space:
mode:
authorokan <okan>2014-01-02 21:30:20 +0000
committerokan <okan>2014-01-02 21:30:20 +0000
commit10d4dcb1278b8ff01d5338aa58d50fa38978a9d5 (patch)
tree04a22ab1bcc0f24d1eb5649282145b304cfd181c
parentc4f6134ebe2bf68943d8660b9933137e7215e0d6 (diff)
downloadcwm-10d4dcb1278b8ff01d5338aa58d50fa38978a9d5.tar.gz
cwm-10d4dcb1278b8ff01d5338aa58d50fa38978a9d5.tar.xz
cwm-10d4dcb1278b8ff01d5338aa58d50fa38978a9d5.zip
bring mousefunc closer to kbfunc
-rw-r--r--calmwm.h31
-rw-r--r--conf.c31
-rw-r--r--mousefunc.c22
-rw-r--r--xevents.c2
4 files changed, 48 insertions, 38 deletions
diff --git a/calmwm.h b/calmwm.h
index 97ecf0c..2e49846 100644
--- a/calmwm.h
+++ b/calmwm.h
@@ -255,7 +255,8 @@ TAILQ_HEAD(keybinding_q, keybinding);
 
 struct mousebinding {
 	TAILQ_ENTRY(mousebinding)	entry;
-	void			 	(*callback)(struct client_ctx *, void *);
+	void			 	(*callback)(struct client_ctx *, union arg *);
+	union arg			argument;
 	u_int				modmask;
 	u_int			 	button;
 #define MOUSEBIND_CTX_ROOT		0x0001
@@ -483,19 +484,25 @@ void			 kbfunc_term(struct client_ctx *, union arg *);
 void 			 kbfunc_tile(struct client_ctx *, union arg *);
 
 void			 mousefunc_client_cyclegroup(struct client_ctx *,
-			    void *);
+			    union arg *);
 void			 mousefunc_client_grouptoggle(struct client_ctx *,
-			    void *);
-void			 mousefunc_client_hide(struct client_ctx *, void *);
-void			 mousefunc_client_lower(struct client_ctx *, void *);
-void			 mousefunc_client_move(struct client_ctx *, void *);
-void			 mousefunc_client_raise(struct client_ctx *, void *);
+			    union arg *);
+void			 mousefunc_client_hide(struct client_ctx *,
+    			    union arg *);
+void			 mousefunc_client_lower(struct client_ctx *,
+    			    union arg *);
+void			 mousefunc_client_move(struct client_ctx *,
+    			    union arg *);
+void			 mousefunc_client_raise(struct client_ctx *,
+    			    union arg *);
 void			 mousefunc_client_rcyclegroup(struct client_ctx *,
-    			   void *);
-void			 mousefunc_client_resize(struct client_ctx *, void *);
-void			 mousefunc_menu_cmd(struct client_ctx *, void *);
-void			 mousefunc_menu_group(struct client_ctx *, void *);
-void			 mousefunc_menu_unhide(struct client_ctx *, void *);
+    			   union arg *);
+void			 mousefunc_client_resize(struct client_ctx *,
+    			    union arg *);
+void			 mousefunc_menu_cmd(struct client_ctx *, union arg *);
+void			 mousefunc_menu_group(struct client_ctx *, union arg *);
+void			 mousefunc_menu_unhide(struct client_ctx *,
+    			    union arg *);
 
 struct menu  		*menu_filter(struct screen_ctx *, struct menu_q *,
 			     char *, char *, int,
diff --git a/conf.c b/conf.c
index 426170f..606d088 100644
--- a/conf.c
+++ b/conf.c
@@ -535,22 +535,24 @@ conf_unbind_kbd(struct conf *c, struct keybinding *unbind)
 }
 
 static struct {
-	char *tag;
-	void (*handler)(struct client_ctx *, void *);
-	int flags;
+	char		*tag;
+	void		 (*handler)(struct client_ctx *, union arg *);
+	int		 flags;
+	union arg	 argument;
 } name_to_mousefunc[] = {
-	{ "window_move", mousefunc_client_move, MOUSEBIND_CTX_WIN },
-	{ "window_resize", mousefunc_client_resize, MOUSEBIND_CTX_WIN },
+	{ "window_move", mousefunc_client_move, MOUSEBIND_CTX_WIN, {0} },
+	{ "window_resize", mousefunc_client_resize, MOUSEBIND_CTX_WIN, {0} },
 	{ "window_grouptoggle", mousefunc_client_grouptoggle,
-	    MOUSEBIND_CTX_WIN },
-	{ "window_lower", mousefunc_client_lower, MOUSEBIND_CTX_WIN },
-	{ "window_raise", mousefunc_client_raise, MOUSEBIND_CTX_WIN },
-	{ "window_hide", mousefunc_client_hide, MOUSEBIND_CTX_WIN },
-	{ "cyclegroup", mousefunc_client_cyclegroup, MOUSEBIND_CTX_ROOT },
-	{ "rcyclegroup", mousefunc_client_rcyclegroup, MOUSEBIND_CTX_ROOT },
-	{ "menu_group", mousefunc_menu_group, MOUSEBIND_CTX_ROOT },
-	{ "menu_unhide", mousefunc_menu_unhide, MOUSEBIND_CTX_ROOT },
-	{ "menu_cmd", mousefunc_menu_cmd, MOUSEBIND_CTX_ROOT },
+	    MOUSEBIND_CTX_WIN, {0} },
+	{ "window_lower", mousefunc_client_lower, MOUSEBIND_CTX_WIN, {0} },
+	{ "window_raise", mousefunc_client_raise, MOUSEBIND_CTX_WIN, {0} },
+	{ "window_hide", mousefunc_client_hide, MOUSEBIND_CTX_WIN, {0} },
+	{ "cyclegroup", mousefunc_client_cyclegroup, MOUSEBIND_CTX_ROOT, {0} },
+	{ "rcyclegroup", mousefunc_client_rcyclegroup,
+	    MOUSEBIND_CTX_ROOT, {0} },
+	{ "menu_group", mousefunc_menu_group, MOUSEBIND_CTX_ROOT, {0} },
+	{ "menu_unhide", mousefunc_menu_unhide, MOUSEBIND_CTX_ROOT, {0} },
+	{ "menu_cmd", mousefunc_menu_cmd, MOUSEBIND_CTX_ROOT, {0} },
 };
 
 static unsigned int mouse_btns[] = {
@@ -597,6 +599,7 @@ conf_bind_mouse(struct conf *c, char *name, char *binding)
 
 		current_binding->callback = name_to_mousefunc[i].handler;
 		current_binding->flags = name_to_mousefunc[i].flags;
+		current_binding->argument = name_to_mousefunc[i].argument;
 		TAILQ_INSERT_TAIL(&c->mousebindingq, current_binding, entry);
 		return (1);
 	}
diff --git a/mousefunc.c b/mousefunc.c
index 2506678..3bc7f1d 100644
--- a/mousefunc.c
+++ b/mousefunc.c
@@ -66,7 +66,7 @@ mousefunc_sweep_draw(struct client_ctx *cc)
 }
 
 void
-mousefunc_client_resize(struct client_ctx *cc, void *arg)
+mousefunc_client_resize(struct client_ctx *cc, union arg *arg)
 {
 	XEvent			 ev;
 	Time			 ltime = 0;
@@ -120,7 +120,7 @@ mousefunc_client_resize(struct client_ctx *cc, void *arg)
 }
 
 void
-mousefunc_client_move(struct client_ctx *cc, void *arg)
+mousefunc_client_move(struct client_ctx *cc, union arg *arg)
 {
 	XEvent			 ev;
 	Time			 ltime = 0;
@@ -173,50 +173,50 @@ mousefunc_client_move(struct client_ctx *cc, void *arg)
 }
 
 void
-mousefunc_client_grouptoggle(struct client_ctx *cc, void *arg)
+mousefunc_client_grouptoggle(struct client_ctx *cc, union arg *arg)
 {
 	group_sticky_toggle_enter(cc);
 }
 
 void
-mousefunc_client_lower(struct client_ctx *cc, void *arg)
+mousefunc_client_lower(struct client_ctx *cc, union arg *arg)
 {
 	client_ptrsave(cc);
 	client_lower(cc);
 }
 
 void
-mousefunc_client_raise(struct client_ctx *cc, void *arg)
+mousefunc_client_raise(struct client_ctx *cc, union arg *arg)
 {
 	client_raise(cc);
 }
 
 void
-mousefunc_client_hide(struct client_ctx *cc, void *arg)
+mousefunc_client_hide(struct client_ctx *cc, union arg *arg)
 {
 	client_hide(cc);
 }
 
 void
-mousefunc_client_cyclegroup(struct client_ctx *cc, void *arg)
+mousefunc_client_cyclegroup(struct client_ctx *cc, union arg *arg)
 {
 	group_cycle(cc->sc, CWM_CYCLE);
 }
 
 void
-mousefunc_client_rcyclegroup(struct client_ctx *cc, void *arg)
+mousefunc_client_rcyclegroup(struct client_ctx *cc, union arg *arg)
 {
 	group_cycle(cc->sc, CWM_RCYCLE);
 }
 
 void
-mousefunc_menu_group(struct client_ctx *cc, void *arg)
+mousefunc_menu_group(struct client_ctx *cc, union arg *arg)
 {
 	group_menu(cc->sc);
 }
 
 void
-mousefunc_menu_unhide(struct client_ctx *cc, void *arg)
+mousefunc_menu_unhide(struct client_ctx *cc, union arg *arg)
 {
 	struct screen_ctx	*sc = cc->sc;
 	struct client_ctx	*old_cc;
@@ -258,7 +258,7 @@ mousefunc_menu_unhide(struct client_ctx *cc, void *arg)
 }
 
 void
-mousefunc_menu_cmd(struct client_ctx *cc, void *arg)
+mousefunc_menu_cmd(struct client_ctx *cc, union arg *arg)
 {
 	struct screen_ctx	*sc = cc->sc;
 	struct menu		*mi;
diff --git a/xevents.c b/xevents.c
index e3d17fd..09232c3 100644
--- a/xevents.c
+++ b/xevents.c
@@ -246,7 +246,7 @@ xev_handle_buttonpress(XEvent *ee)
 		cc->sc = screen_fromroot(e->window);
 	}
 
-	(*mb->callback)(cc, e);
+	(*mb->callback)(cc, &mb->argument);
 }
 
 static void