summaryrefslogtreecommitdiffstats
path: root/system/xtrs/window_close.diff
diff options
context:
space:
mode:
Diffstat (limited to 'system/xtrs/window_close.diff')
-rw-r--r--system/xtrs/window_close.diff35
1 files changed, 35 insertions, 0 deletions
diff --git a/system/xtrs/window_close.diff b/system/xtrs/window_close.diff
new file mode 100644
index 0000000000..96bef4e05e
--- /dev/null
+++ b/system/xtrs/window_close.diff
@@ -0,0 +1,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;
+ }
+