summary refs log tree commit diff
path: root/calmwm.h
diff options
context:
space:
mode:
authorokan <okan>2016-10-18 17:03:30 +0000
committerokan <okan>2016-10-18 17:03:30 +0000
commit0bb1be86c69ea95103e1a6b38c093406a47cdb07 (patch)
treeb7aa2c4a5a2c09bb20637f0c50dd4c01377abda0 /calmwm.h
parent38eac7d7e9d36243271eb7f968a3152c9eb0cfbc (diff)
downloadcwm-0bb1be86c69ea95103e1a6b38c093406a47cdb07.tar.gz
cwm-0bb1be86c69ea95103e1a6b38c093406a47cdb07.tar.xz
cwm-0bb1be86c69ea95103e1a6b38c093406a47cdb07.zip
Refactor callbacks to take a void * so as to not try and generalize into
client_ctx in keypress and buttonpress event handlers; pass appropriate *ctx's
based on context.

While here, limit some globals, replace defines with appropriate variables and
fix some naming.
Diffstat (limited to 'calmwm.h')
-rw-r--r--calmwm.h242
1 files changed, 122 insertions, 120 deletions
diff --git a/calmwm.h b/calmwm.h
index c8a7f70..f6542a7 100644
--- a/calmwm.h
+++ b/calmwm.h
@@ -57,41 +57,14 @@
 #define CWM_BIGAMOUNT		0x0010
 #define DIRECTIONMASK	(CWM_UP | CWM_DOWN | CWM_LEFT | CWM_RIGHT)
 
-#define CWM_CLIENT_CYCLE	0x0001
-#define CWM_CLIENT_RCYCLE	0x0002
-#define CWM_CLIENT_CYCLE_INGRP	0x0004
-
-#define CWM_CLIENT_TILE_HORIZ	0x0001
-#define CWM_CLIENT_TILE_VERT	0x0002
-
-#define CWM_MENU_EXEC		0x0001
-#define CWM_MENU_EXEC_WM	0x0002
-
-#define CWM_MENU_DUMMY		0x0001
-#define CWM_MENU_FILE		0x0002
-#define CWM_MENU_LIST		0x0004
-
-#define CWM_GAP			0x0001
-#define CWM_NOGAP		0x0002
-
-#define CWM_KEY			0x0001
-#define CWM_BTN			0x0002
-
-#define CWM_CONTEXT_NONE	0x0000
-#define CWM_CONTEXT_CLIENT	0x0001
-#define CWM_CONTEXT_SCREEN	0x0002
-
-#define CWM_QUIT		0x0000
-#define CWM_RUNNING		0x0001
-#define CWM_EXEC_WM		0x0002
-
-union arg {
-	char	*c;
-	int	 i;
-};
-union press {
-	KeySym		 keysym;
-	unsigned int	 button;
+#define CWM_CYCLE_FORWARD	0x0001
+#define CWM_CYCLE_REVERSE	0x0002
+#define CWM_CYCLE_INGROUP	0x0004
+
+enum cwm_status {
+	CWM_QUIT,
+	CWM_RUNNING,
+	CWM_EXEC_WM
 };
 
 enum cursor_font {
@@ -121,6 +94,10 @@ struct geom {
 	int		 h;
 };
 
+enum apply_gap {
+	CWM_NOGAP = 0,
+	CWM_GAP
+};
 struct gap {
 	int		 top;
 	int		 bottom;
@@ -132,7 +109,7 @@ struct winname {
 	TAILQ_ENTRY(winname)	 entry;
 	char			*name;
 };
-TAILQ_HEAD(winname_q, winname);
+TAILQ_HEAD(name_q, winname);
 TAILQ_HEAD(ignore_q, winname);
 
 struct client_ctx {
@@ -185,31 +162,31 @@ struct client_ctx {
 #define CLIENT_MAXIMIZED		(CLIENT_VMAXIMIZED | CLIENT_HMAXIMIZED)
 	int			 flags;
 	int			 stackingorder;
-	struct winname_q	 nameq;
+	struct name_q		 nameq;
 	char			*name;
 	char			*label;
 	char			*matchname;
 	XClassHint		ch;
 	XWMHints		*wmh;
 };
-TAILQ_HEAD(client_ctx_q, client_ctx);
+TAILQ_HEAD(client_q, client_ctx);
 
 struct group_ctx {
 	TAILQ_ENTRY(group_ctx)	 entry;
 	struct screen_ctx	*sc;
 	char			*name;
 	int			 num;
-	struct client_ctx_q	 clientq;
+	struct client_q		 clientq;
 };
-TAILQ_HEAD(group_ctx_q, group_ctx);
+TAILQ_HEAD(group_q, group_ctx);
 
-struct autogroupwin {
-	TAILQ_ENTRY(autogroupwin)	 entry;
-	char				*class;
-	char				*name;
-	int 				 num;
+struct autogroup {
+	TAILQ_ENTRY(autogroup)	 entry;
+	char			*class;
+	char			*name;
+	int 			 num;
 };
-TAILQ_HEAD(autogroupwin_q, autogroupwin);
+TAILQ_HEAD(autogroup_q, autogroup);
 
 struct region_ctx {
 	TAILQ_ENTRY(region_ctx)	 entry;
@@ -218,7 +195,7 @@ struct region_ctx {
 	struct geom		 view; /* viewable area */
 	struct geom		 work; /* workable area, gap-applied */
 };
-TAILQ_HEAD(region_ctx_q, region_ctx);
+TAILQ_HEAD(region_q, region_ctx);
 
 struct screen_ctx {
 	TAILQ_ENTRY(screen_ctx)	 entry;
@@ -230,9 +207,9 @@ struct screen_ctx {
 	struct geom		 view; /* viewable area */
 	struct geom		 work; /* workable area, gap-applied */
 	struct gap		 gap;
-	struct client_ctx_q	 clientq;
-	struct region_ctx_q	 regionq;
-	struct group_ctx_q	 groupq;
+	struct client_q		 clientq;
+	struct region_q		 regionq;
+	struct group_q		 groupq;
 	struct group_ctx	*group_active;
 	struct {
 		Window		 win;
@@ -241,25 +218,50 @@ struct screen_ctx {
 	XftColor		 xftcolor[CWM_COLOR_NITEMS];
 	XftFont			*xftfont;
 };
-TAILQ_HEAD(screen_ctx_q, screen_ctx);
+TAILQ_HEAD(screen_q, screen_ctx);
 
-struct binding {
-	TAILQ_ENTRY(binding)	 entry;
-	void			(*callback)(struct client_ctx *, union arg *, int);
+enum xev {
+	CWM_XEV_KEY,
+	CWM_XEV_BTN
+};
+union arg {
+	char	*c;
+	int	 i;
+};
+union press {
+	KeySym		 keysym;
+	unsigned int	 button;
+};
+enum context {
+	CWM_CONTEXT_NONE,
+	CWM_CONTEXT_CC,
+	CWM_CONTEXT_SC
+};
+struct bind_ctx {
+	TAILQ_ENTRY(bind_ctx)	 entry;
+	void			(*callback)(void *, union arg *, enum xev);
 	union arg		 argument;
 	unsigned int		 modmask;
 	union press		 press;
-	int			 context;
+	enum context		 context;
 };
-TAILQ_HEAD(keybinding_q, binding);
-TAILQ_HEAD(mousebinding_q, binding);
+TAILQ_HEAD(keybind_q, bind_ctx);
+TAILQ_HEAD(mousebind_q, bind_ctx);
 
-struct cmd {
-	TAILQ_ENTRY(cmd)	 entry;
+struct cmd_ctx {
+	TAILQ_ENTRY(cmd_ctx)	 entry;
 	char			*name;
 	char			 path[PATH_MAX];
 };
-TAILQ_HEAD(cmd_q, cmd);
+TAILQ_HEAD(cmd_q, cmd_ctx);
+
+enum menu_exec {
+	CWM_MENU_EXEC_EXEC,
+	CWM_MENU_EXEC_WM
+};
+#define CWM_MENU_DUMMY		0x0001
+#define CWM_MENU_FILE		0x0002
+#define CWM_MENU_LIST		0x0004
 
 struct menu {
 	TAILQ_ENTRY(menu)	 entry;
@@ -274,9 +276,9 @@ struct menu {
 TAILQ_HEAD(menu_q, menu);
 
 struct conf {
-	struct keybinding_q	 keybindingq;
-	struct mousebinding_q	 mousebindingq;
-	struct autogroupwin_q	 autogroupq;
+	struct keybind_q	 keybindq;
+	struct mousebind_q	 mousebindq;
+	struct autogroup_q	 autogroupq;
 	struct ignore_q		 ignoreq;
 	struct cmd_q		 cmdq;
 	int			 ngroups;
@@ -291,6 +293,9 @@ struct conf {
 	char			*font;
 	char			*wmname;
 	Cursor			 cursor[CF_NITEMS];
+	int			 xrandr;
+	int			 xrandr_event_base;
+	char			*wm_argv;
 };
 
 /* MWM hints */
@@ -321,15 +326,7 @@ struct mwm_hints {
 	unsigned long	decorations;
 };
 
-extern Display				*X_Dpy;
-extern Time				 Last_Event_Time;
-extern struct screen_ctx_q		 Screenq;
-extern struct conf			 Conf;
-extern char				*wm_argv;
-extern const char			*homedir;
-extern int				 HasRandr, Randr_ev;
-
-enum {
+enum cwmh {
 	WM_STATE,
 	WM_DELETE_WINDOW,
 	WM_TAKE_FOCUS,
@@ -339,7 +336,7 @@ enum {
 	WM_CHANGE_STATE,
 	CWMH_NITEMS
 };
-enum {
+enum ewmh {
 	_NET_SUPPORTED,
 	_NET_SUPPORTING_WM_CHECK,
 	_NET_ACTIVE_WINDOW,
@@ -367,13 +364,19 @@ enum {
 	_CWM_WM_STATE_FREEZE,
 	EWMH_NITEMS
 };
-enum {
+enum net_wm_state {
 	_NET_WM_STATE_REMOVE,
 	_NET_WM_STATE_ADD,
 	_NET_WM_STATE_TOGGLE
 };
+
+extern Display				*X_Dpy;
+extern Time				 Last_Event_Time;
 extern Atom				 cwmh[CWMH_NITEMS];
 extern Atom				 ewmh[EWMH_NITEMS];
+extern struct screen_q			 Screenq;
+extern struct conf			 Conf;
+extern const char			*homedir;
 
 __dead void		 usage(void);
 
@@ -451,57 +454,56 @@ void			 search_print_group(struct menu *, int);
 struct region_ctx	*region_find(struct screen_ctx *, int, int);
 struct geom		 screen_apply_gap(struct screen_ctx *, struct geom);
 struct screen_ctx	*screen_find(Window);
-struct geom		 screen_area(struct screen_ctx *, int, int, int);
+struct geom		 screen_area(struct screen_ctx *, int, int,
+			     enum apply_gap);
 void			 screen_init(int);
 void			 screen_update_geometry(struct screen_ctx *);
 void			 screen_updatestackingorder(struct screen_ctx *);
 void			 screen_assert_clients_within(struct screen_ctx *);
 
-void			 kbfunc_client_cycle(struct client_ctx *, union arg *, int);
-void			 kbfunc_client_delete(struct client_ctx *, union arg *, int);
-void			 kbfunc_client_hide(struct client_ctx *, union arg *, int);
-void			 kbfunc_menu_client_label(struct client_ctx *, union arg *, int);
-void			 kbfunc_client_lower(struct client_ctx *, union arg *, int);
-void			 kbfunc_client_move(struct client_ctx *, union arg *, int);
-void			 kbfunc_client_movetogroup(struct client_ctx *,
-			     union arg *, int);
-void			 kbfunc_client_raise(struct client_ctx *, union arg *, int);
-void			 kbfunc_client_resize(struct client_ctx *, union arg *, int);
-void 			 kbfunc_client_tile(struct client_ctx *, union arg *, int);
-void			 kbfunc_client_toggle_group(struct client_ctx *,
-			     union arg *, int);
-void			 kbfunc_client_toggle_freeze(struct client_ctx *,
-    			     union arg *, int);
-void			 kbfunc_client_toggle_fullscreen(struct client_ctx *,
-			     union arg *, int);
-void			 kbfunc_client_toggle_hmaximize(struct client_ctx *,
-			     union arg *, int);
-void			 kbfunc_client_toggle_maximize(struct client_ctx *,
-			     union arg *, int);
-void			 kbfunc_client_toggle_sticky(struct client_ctx *,
-    			     union arg *, int);
-void			 kbfunc_client_toggle_vmaximize(struct client_ctx *,
-			     union arg *, int);
-void			 kbfunc_cwm_status(struct client_ctx *, union arg *, int);
-void			 kbfunc_exec(struct client_ctx *, union arg *, int);
-void			 kbfunc_exec_lock(struct client_ctx *, union arg *, int);
-void			 kbfunc_exec_term(struct client_ctx *, union arg *, int);
-void			 kbfunc_group_alltoggle(struct client_ctx *,
-			     union arg *, int);
-void			 kbfunc_group_cycle(struct client_ctx *, union arg *, int);
-void			 kbfunc_group_only(struct client_ctx *, union arg *, int);
-void			 kbfunc_group_toggle(struct client_ctx *, union arg *, int);
-void			 kbfunc_menu_exec(struct client_ctx *, union arg *, int);
-void			 kbfunc_menu_client(struct client_ctx *, union arg *, int);
-void			 kbfunc_menu_cmd(struct client_ctx *, union arg *, int);
-void			 kbfunc_menu_group(struct client_ctx *, union arg *, int);
-void			 kbfunc_menu_ssh(struct client_ctx *, union arg *, int);
-void			 kbfunc_ptrmove(struct client_ctx *, union arg *, int);
-
-void			 mousefunc_client_move(struct client_ctx *,
-    			    union arg *, int);
-void			 mousefunc_client_resize(struct client_ctx *,
-    			    union arg *, int);
+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_resize(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);
+void			 kbfunc_client_hide(void *, union arg *, enum xev);
+void			 kbfunc_client_toggle_freeze(void *,
+			     union arg *, enum xev);
+void			 kbfunc_client_toggle_sticky(void *,
+			     union arg *, enum xev);
+void			 kbfunc_client_toggle_fullscreen(void *,
+			     union arg *, enum xev);
+void			 kbfunc_client_toggle_maximize(void *,
+			     union arg *, enum xev);
+void			 kbfunc_client_toggle_hmaximize(void *,
+			     union arg *, enum xev);
+void			 kbfunc_client_toggle_vmaximize(void *,
+			     union arg *, enum xev);
+void 			 kbfunc_client_htile(void *, union arg *, enum xev);
+void 			 kbfunc_client_vtile(void *, union arg *, enum xev);
+void			 kbfunc_client_cycle(void *, union arg *, enum xev);
+void			 kbfunc_client_toggle_group(void *,
+			     union arg *, enum xev);
+void			 kbfunc_client_movetogroup(void *,
+			     union arg *, enum xev);
+void			 kbfunc_group_toggle(void *, union arg *, enum xev);
+void			 kbfunc_group_only(void *, union arg *, enum xev);
+void			 kbfunc_group_cycle(void *, union arg *, enum xev);
+void			 kbfunc_group_alltoggle(void *, union arg *, enum xev);
+void			 kbfunc_menu_client(void *, union arg *, enum xev);
+void			 kbfunc_menu_cmd(void *, union arg *, enum xev);
+void			 kbfunc_menu_group(void *, union arg *, enum xev);
+void			 kbfunc_menu_exec(void *, union arg *, enum xev);
+void			 kbfunc_menu_ssh(void *, union arg *, enum xev);
+void			 kbfunc_menu_client_label(void *, union arg *, enum xev);
+void			 kbfunc_exec_cmd(void *, union arg *, enum xev);
+void			 kbfunc_exec_lock(void *, union arg *, enum xev);
+void			 kbfunc_exec_term(void *, union arg *, enum xev);
+
+void			 mousefunc_client_move(void *, union arg *, enum xev);
+void			 mousefunc_client_resize(void *, union arg *, enum xev);
 
 void			 menu_windraw(struct screen_ctx *, Window,
 			     const char *, ...);