summaryrefslogtreecommitdiffstats
path: root/system/xtrs/window_close.diff
blob: 96bef4e05ec670d76ddf598fc1cfa80e5f1779f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
diff -Naur xtrs-4.9d/trs_xinterface.c xtrs-4.9d.patched/trs_xinterface.c
--- xtrs-4.9d/trs_xinterface.c	2009-06-15 23:23:09.000000000 -0400
+++ xtrs-4.9d.patched/trs_xinterface.c	2023-05-17 15:31:29.237827697 -0400
@@ -730,6 +730,7 @@
   Colormap color_map;
   XColor cdef;
   XGCValues gcvals;
+  Atom wm_delete_window;
   char *fontname = NULL;
   char *widefontname = NULL;
   int len;
@@ -737,6 +738,7 @@
 
   screen = DefaultScreen(display);
   color_map = DefaultColormap(display,screen);
+  wm_delete_window = XInternAtom(display, "WM_DELETE_WINDOW", False);
 
   (void) sprintf(option, "%s%s", program_name, ".foreground");
   if (XrmGetResource(x_db, option, "Xtrs.Foreground", &type, &value)) {
@@ -937,6 +939,7 @@
   trs_fix_size(window, OrigWidth, OrigHeight);
   XStoreName(display,window,title);
   XSelectInput(display, window, EVENT_MASK);
+  XSetWMProtocols(display, window, &wm_delete_window, 1);
 
   (void) sprintf(option, "%s%s", program_name, ".iconic"); 
   if (XrmGetResource(x_db, option, "Xtrs.Iconic", &type, &value)) { 
@@ -1002,6 +1005,7 @@
     if (wait) {
       XNextEvent(display, &event);
     } else {
+      if (XCheckTypedEvent(display, ClientMessage, &event)) trs_exit();
       if (!XCheckMaskEvent(display, ~0, &event)) return;
     }