From e666d231a1035c96788fc148bcc7eda4b8c1b6ec Mon Sep 17 00:00:00 2001 From: Andy Spencer Date: Sun, 3 Jun 2012 01:47:22 +0000 Subject: [PATCH] Add window-close function --- sys-x11.c | 6 +++++- sys.h | 1 + wm-wmii.c | 5 ++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/sys-x11.c b/sys-x11.c index ef72d25..3ea7ded 100644 --- a/sys-x11.c +++ b/sys-x11.c @@ -346,7 +346,7 @@ static void process_event(int type, XEvent *xe, win_t *root) } else if (type == UnmapNotify) { if ((win = win_find(dpy,xe->xunmap.window,0)) && - win->sys->state == ST_SHOW) { + win->sys->state != ST_HIDE) { if (!strut_del(root, win)) wm_remove(win); else @@ -479,6 +479,10 @@ void sys_show(win_t *win, state_t state) printf("sys_show: hide\n"); XUnmapWindow(win->sys->dpy, win->sys->xid); return; + case ST_CLOSE: + printf("sys_show: close\n"); + XDestroyWindow(win->sys->dpy, win->sys->xid); + return; } } diff --git a/sys.h b/sys.h index 2ac76a1..8a21aef 100644 --- a/sys.h +++ b/sys.h @@ -31,6 +31,7 @@ typedef enum { ST_SHADE, // show titlebar only ST_ICON, // iconified/minimized ST_HIDE, // completely hidden + ST_CLOSE, // close the window } state_t; /* Basic window type */ diff --git a/wm-wmii.c b/wm-wmii.c index a2be22d..82fc223 100644 --- a/wm-wmii.c +++ b/wm-wmii.c @@ -755,6 +755,9 @@ int wm_handle_event(win_t *win, event_t ev, mod_t mod, ptr_t ptr) if (ev == EV_F6) return print_txt(), 1; if (ev == 'q') return sys_exit(), 1; } + if (mod.MODKEY && mod.shift) { + if (ev == 'c') return sys_show(win, ST_CLOSE), 1; + } /* Floating layer */ if (ev == ' ') { @@ -911,7 +914,7 @@ void wm_init(win_t *root) wm->tags = list_insert(NULL, wm->tag); event_t ev_e[] = {EV_ENTER, EV_FOCUS}; - event_t ev_s[] = {'h', 'j', 'k', 'l', 'q', ' ', + event_t ev_s[] = {'h', 'j', 'k', 'l', 'c', 'q', ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; event_t ev_m[] = {'h', 'j', 'k', 'l', 'd', 's', 'm', 't', ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', -- 2.43.2