X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=wm-wmii.c;h=ac1333325dfb656ceedc864148f747594623212b;hb=79245152446fc0b9e3523135beabbd6783d2026a;hp=06b71f67694830210204c2a374b23dd23c8d6f03;hpb=776ac6910ee9db701c1cfe2ab234ae5fb96ce9db;p=wmpus diff --git a/wm-wmii.c b/wm-wmii.c index 06b71f6..ac13333 100644 --- a/wm-wmii.c +++ b/wm-wmii.c @@ -739,6 +739,7 @@ int wm_handle_key(win_t *win, Key_t key, mod_t mod, ptr_t ptr) #endif if (key == key_f5) return wm_update(), 1; if (key == key_f6) return print_txt(), 1; + if (key == 'q') return sys_exit(), 1; } /* Floating layer */ @@ -902,7 +903,7 @@ void wm_init(win_t *root) wm->tags = list_insert(NULL, wm->tag); Key_t keys_e[] = {key_enter, key_focus}; - Key_t keys_s[] = {'h', 'j', 'k', 'l', ' ', + Key_t keys_s[] = {'h', 'j', 'k', 'l', 'q', ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; Key_t keys_m[] = {'h', 'j', 'k', 'l', 'd', 's', 'm', 't', ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', @@ -915,3 +916,25 @@ void wm_init(win_t *root) for (int i = 0; i < countof(keys_s); i++) sys_watch(root, keys_s[i], MOD(.MODKEY=1,.shift=1)); } + +void wm_free(win_t *root) +{ + /* Re-show and free all windows */ + while ( wm->tags) { tag_t *tag = wm->tags->data; + while (tag->dpys) { dpy_t *dpy = tag->dpys->data; + while (dpy->cols) { col_t *col = dpy->cols->data; + while (col->rows) { row_t *row = col->rows->data; + sys_show(row->win, st_show); + free(row->win->wm); + col->rows = list_remove(col->rows, col->rows, 1); } + dpy->cols = list_remove(dpy->cols, dpy->cols, 1); } + while (dpy->flts) { flt_t *flt = dpy->flts->data; + sys_show(flt->win, st_show); + free(flt->win->wm); + dpy->flts = list_remove(dpy->flts, dpy->flts, 1); } + tag->dpys = list_remove(tag->dpys, tag->dpys, 1); } + wm->tags = list_remove( wm->tags, wm->tags, 1); } + + /* Free remaining data */ + free(wm); +}