]> Pileus Git - wmpus/blobdiff - wm-tags.c
Add fullscreen support
[wmpus] / wm-tags.c
index 6e23c82d2bffa97ddb70144cb7c6b7a3cbbf36fb..6246dd788efb8fe0b4dccb24f4225e3d444fdfe3 100644 (file)
--- a/wm-tags.c
+++ b/wm-tags.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Andy Spencer <andy753421@gmail.com>
+ * Copyright (c) 2011-2012, Andy Spencer <andy753421@gmail.com>
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -35,28 +35,25 @@ void wm_update(void)
 {
 }
 
-int wm_handle_key(win_t *win, Key_t key, mod_t mod, ptr_t ptr)
+int wm_handle_event(win_t *win, event_t ev, mod_t mod, ptr_t ptr)
 {
-       int new = key - '0';
-       if (!win)
-               return 0;
-       if (!mod.MODKEY)
-               return 0;
-       if (key < '0' || '9' < key)
-               return 0;
-       if (new == tag)
+       int new = ev - '0';
+       if (!win || !mod.MODKEY || mod.up || new == tag ||
+                       ev < '0' || ev > '9')
                return 0;
 
        if (mod.shift) {
                list_t *node = list_find(tags[tag], win);
+               if (node == NULL)
+                       return 0;
                tags[tag] = list_remove(tags[tag], node, 0);
                tags[new] = list_insert(tags[new], win);
-               sys_show(win, st_hide);
+               sys_show(win, ST_HIDE);
        } else {
                for (list_t *cur = tags[new]; cur; cur = cur->next)
-                       sys_show(cur->data, st_show);
+                       sys_show(cur->data, ST_SHOW);
                for (list_t *cur = tags[tag]; cur; cur = cur->next)
-                       sys_show(cur->data, st_hide);
+                       sys_show(cur->data, ST_HIDE);
                tag = new;
        }
        return 1;
@@ -76,13 +73,15 @@ void wm_remove(win_t *win)
 {
        for (int i = 0; i < 10; i++) {
                list_t *node = list_find(tags[i], win);
+               if (node == NULL)
+                       continue;
                tags[i] = list_remove(tags[i], node, 0);
        }
 }
 
 void wm_init(win_t *root)
 {
-       Key_t keys[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
+       event_t keys[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
        for (int i = 0; i < countof(keys); i++) {
                sys_watch(root, keys[i], MOD(.MODKEY=1));
                sys_watch(root, keys[i], MOD(.MODKEY=1,.shift=1));
@@ -93,7 +92,7 @@ void wm_free(win_t *root)
 {
        for (int i = 0; i < 10; i++) {
                while (tags[i]) {
-                       sys_show(tags[i]->data, st_show);
+                       sys_show(tags[i]->data, ST_SHOW);
                        tags[i] = list_remove(tags[i], tags[i], 0);
                }
        }