aboutsummaryrefslogtreecommitdiffstats
path: root/calmwm.h
diff options
context:
space:
mode:
authorokan2017-05-09 13:40:18 +0000
committerokan2017-05-09 13:40:18 +0000
commitc0236e8f1db054489bfaf7f9b517a59a8fbafd70 (patch)
treef261a3d4ba774136904d337d118587b62611d661 /calmwm.h
parentc44f7f8975b29c13365cb80c54a9b7f26fee3943 (diff)
downloadcwm-c0236e8f1db054489bfaf7f9b517a59a8fbafd70.tar.gz
Alter callbacks to take a struct instead of a growing number of arguments;
greatly simplifies upcoming work.
Diffstat (limited to 'calmwm.h')
-rw-r--r--calmwm.h112
1 files changed, 51 insertions, 61 deletions
diff --git a/calmwm.h b/calmwm.h
index 1800aa3..ff7d156 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.
*
- * $OpenBSD: calmwm.h,v 1.338 2017/05/01 12:54:55 okan Exp $
+ * $OpenBSD: calmwm.h,v 1.339 2017/05/09 13:40:18 okan Exp $
*/
#ifndef _CALMWM_H_
@@ -66,7 +66,6 @@ enum cwm_status {
CWM_RUNNING,
CWM_EXEC_WM
};
-
enum cursor_font {
CF_NORMAL,
CF_MOVE,
@@ -156,7 +155,6 @@ struct client_ctx {
#define CLIENT_FULLSCREEN 0x0800
#define CLIENT_STICKY 0x1000
#define CLIENT_ACTIVE 0x2000
-
#define CLIENT_HIGHLIGHT (CLIENT_GROUP | CLIENT_UNGROUP)
#define CLIENT_MAXFLAGS (CLIENT_VMAXIMIZED | CLIENT_HMAXIMIZED)
#define CLIENT_MAXIMIZED (CLIENT_VMAXIMIZED | CLIENT_HMAXIMIZED)
@@ -219,30 +217,29 @@ struct screen_ctx {
};
TAILQ_HEAD(screen_q, screen_ctx);
-enum xev {
- CWM_XEV_KEY,
- CWM_XEV_BTN
-};
-union arg {
- char *c;
- int i;
-};
-union press {
- KeySym keysym;
- unsigned int button;
+struct cargs {
+ char *cmd;
+ int flag;
+ enum {
+ CWM_XEV_KEY,
+ CWM_XEV_BTN
+ } xev;
};
enum context {
- CWM_CONTEXT_NONE,
+ CWM_CONTEXT_NONE = 0,
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;
+ void (*callback)(void *, struct cargs *);
+ struct cargs *cargs;
enum context context;
+ unsigned int modmask;
+ union {
+ KeySym keysym;
+ unsigned int button;
+ } press;
};
TAILQ_HEAD(keybind_q, bind_ctx);
TAILQ_HEAD(mousebind_q, bind_ctx);
@@ -462,49 +459,42 @@ void screen_update_geometry(struct screen_ctx *);
void screen_updatestackingorder(struct screen_ctx *);
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_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_cwm_status(void *, struct cargs *);
+void kbfunc_ptrmove(void *, struct cargs *);
+void kbfunc_client_move(void *, struct cargs *);
+void kbfunc_client_resize(void *, struct cargs *);
+void kbfunc_client_delete(void *, struct cargs *);
+void kbfunc_client_lower(void *, struct cargs *);
+void kbfunc_client_raise(void *, struct cargs *);
+void kbfunc_client_hide(void *, struct cargs *);
+void kbfunc_client_toggle_freeze(void *, struct cargs *);
+void kbfunc_client_toggle_sticky(void *, struct cargs *);
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);
+ struct cargs *);
+void kbfunc_client_toggle_maximize(void *, struct cargs *);
+void kbfunc_client_toggle_hmaximize(void *, struct cargs *);
+void kbfunc_client_toggle_vmaximize(void *, struct cargs *);
+void kbfunc_client_htile(void *, struct cargs *);
+void kbfunc_client_vtile(void *, struct cargs *);
+void kbfunc_client_cycle(void *, struct cargs *);
+void kbfunc_client_toggle_group(void *, struct cargs *);
+void kbfunc_client_movetogroup(void *, struct cargs *);
+void kbfunc_group_toggle(void *, struct cargs *);
+void kbfunc_group_only(void *, struct cargs *);
+void kbfunc_group_cycle(void *, struct cargs *);
+void kbfunc_group_alltoggle(void *, struct cargs *);
+void kbfunc_menu_client(void *, struct cargs *);
+void kbfunc_menu_cmd(void *, struct cargs *);
+void kbfunc_menu_group(void *, struct cargs *);
+void kbfunc_menu_exec(void *, struct cargs *);
+void kbfunc_menu_ssh(void *, struct cargs *);
+void kbfunc_menu_client_label(void *, struct cargs *);
+void kbfunc_exec_cmd(void *, struct cargs *);
+void kbfunc_exec_lock(void *, struct cargs *);
+void kbfunc_exec_term(void *, struct cargs *);
+
+void mousefunc_client_move(void *, struct cargs *);
+void mousefunc_client_resize(void *, struct cargs *);
void menu_windraw(struct screen_ctx *, Window,
const char *, ...);