diff options
| author | katalx | 2026-01-28 21:15:24 -0500 |
|---|---|---|
| committer | katalx | 2026-01-28 21:15:24 -0500 |
| commit | 3f9f8b015922213611320ed9f5b0fb9e603a226c (patch) | |
| tree | 1e27ed89ea28511673420634c81efc65adabc2ee | |
| parent | 51f46587b509b3395cbd8acb73d53e1c1b031d7a (diff) | |
close events now work properly!!
| -rw-r--r-- | main.c | 2 | ||||
| -rw-r--r-- | ui.c | 10 | ||||
| -rw-r--r-- | ui.h | 3 |
3 files changed, 14 insertions, 1 deletions
@@ -129,6 +129,8 @@ main(int argc, char **argv) opt ); break; + case UI_QUIT: + goto done; default: break; } @@ -16,6 +16,7 @@ static int scr; static unsigned long fg, bg; static XSizeHints szhint; static GC gc; +static Atom wm_delete_window; static Font freg, fital; @@ -55,6 +56,9 @@ ui_init(int argc, char **argv) XSelectInput(dsp, win, KeyPressMask | ExposureMask); XMapRaised(dsp, win); + wm_delete_window = XInternAtom(dsp, "WM_DELETE_WINDOW", False); + XSetWMProtocols(dsp, win, &wm_delete_window, 1); + freg = XLoadFont(dsp, "-*-new century schoolbook-medium-r-*-*-24-*-*-*-*-*-*-*"); fital = XLoadFont(dsp, "-*-new century schoolbook-medium-i-*-*-24-*-*-*-*-*-*-*"); } @@ -99,6 +103,12 @@ loop: case Expose: e->type = UI_REDRAW; return 1; + case ClientMessage: + if (ev.xclient.data.l[0] == wm_delete_window) { + e->type = UI_QUIT; + return 1; + } + break; } fprintf(stderr, "[Unknown event %d]\n", ev.type); goto loop; @@ -7,7 +7,8 @@ typedef enum { UI_REDRAW, UI_KEY_DOWN, - UI_KEY_UP + UI_KEY_UP, + UI_QUIT } UiEventType; typedef enum { |
