diff options
-rw-r--r-- | main.c | 4 | ||||
-rw-r--r-- | window.c | 6 | ||||
-rw-r--r-- | window.h | 2 |
3 files changed, 11 insertions, 1 deletions
@@ -475,6 +475,10 @@ void run() { timeout = 1; } break; + case ClientMessage: + if ((Atom) ev.xclient.data.l[0] == wm_delete_win) + return; + break; } } } @@ -28,9 +28,10 @@ static Cursor arrow; static Cursor hand; - static GC bgc; +Atom wm_delete_win; + void win_set_sizehints(win_t *win) { XSizeHints sizehints; @@ -122,6 +123,9 @@ void win_open(win_t *win) { XMapWindow(e->dpy, win->xwin); XFlush(e->dpy); + + wm_delete_win = XInternAtom(e->dpy, "WM_DELETE_WINDOW", False); + XSetWMProtocols(e->dpy, win->xwin, &wm_delete_win, 1); if (options->fullscreen) win_toggle_fullscreen(win); @@ -53,6 +53,8 @@ typedef struct win_s { unsigned char fullscreen; } win_t; +extern Atom wm_delete_win; + void win_open(win_t*); void win_close(win_t*); |