From 790b651e2dc8a8b7f2dcfe9e34599b76b6df0fbf Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Mon, 26 May 2003 19:01:51 +0000 Subject: [PATCH] add a close button --- render2/test.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/render2/test.c b/render2/test.c index 4db87ff8..080b5d8d 100644 --- a/render2/test.c +++ b/render2/test.c @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -21,6 +22,8 @@ int main() struct RrInstance *inst; XEvent report; XClassHint chint; + Atom delete_win, protocols; + int quit; if (!(display = XOpenDisplay(NULL))) { fprintf(stderr, "couldn't connect to X server in DISPLAY\n"); @@ -41,6 +44,10 @@ int main() chint.res_class = "Rendertest"; XSetClassHint(display, win, &chint); + delete_win = XInternAtom(display, "WM_DELETE_WINDOW", False); + protocols = XInternAtom(display, "WM_PROTOCOLS", False); + XSetWMProtocols(display, win, &delete_win, 1); + /* init Render */ if (!(inst = RrInit(display, DefaultScreen(display)))) { fprintf(stderr, "couldn't initialize the Render library " @@ -49,9 +56,14 @@ int main() } /*paint(win, look);*/ - while (1) { + quit = 0; + while (!quit) { XNextEvent(display, &report); switch (report.type) { + case ClientMessage: + if ((Atom)report.xclient.message_type == protocols) + if ((Atom)report.xclient.data.l[0] == delete_win) + quit = 1; case Expose: break; case ConfigureNotify: @@ -63,5 +75,7 @@ int main() } + RrDestroy(inst); + return 1; } -- 2.34.1