summaryrefslogtreecommitdiffstats
path: root/system/kegs/allow_window_close.diff
diff options
context:
space:
mode:
Diffstat (limited to 'system/kegs/allow_window_close.diff')
-rw-r--r--system/kegs/allow_window_close.diff35
1 files changed, 35 insertions, 0 deletions
diff --git a/system/kegs/allow_window_close.diff b/system/kegs/allow_window_close.diff
new file mode 100644
index 0000000000..538022e044
--- /dev/null
+++ b/system/kegs/allow_window_close.diff
@@ -0,0 +1,35 @@
+diff -Naur kegs.0.91/src/xdriver.c kegs.0.91.patched//src/xdriver.c
+--- kegs.0.91/src/xdriver.c 2004-12-06 19:42:47.000000000 -0500
++++ kegs.0.91.patched//src/xdriver.c 2011-01-27 04:28:42.000000000 -0500
+@@ -57,6 +57,7 @@
+ Display *g_display = 0;
+ Visual *g_vis = 0;
+ Window g_a2_win;
++Atom g_wmdelete_atom;
+ GC g_a2_winGC;
+ XFontStruct *g_text_FontSt;
+ Colormap g_a2_colormap = 0;
+@@ -582,6 +583,9 @@
+ 0, &my_winSizeHints, 0, &my_winClassHint);
+ XMapRaised(g_display, g_a2_win);
+
++ g_wmdelete_atom = XInternAtom(g_display, "WM_DELETE_WINDOW", True);
++ XSetWMProtocols(g_display, g_a2_win, &g_wmdelete_atom, 1);
++
+ XSync(g_display, False);
+
+ g_a2_winGC = XCreateGC(g_display, g_a2_win, 0, (XGCValues *) 0);
+@@ -1086,6 +1090,13 @@
+ (word32)ev.xcolormap.colormap,
+ ev.xcolormap.new, ev.xcolormap.state);
+ break;
++ case ClientMessage:
++ if(ev.xclient.data.l[0] == g_wmdelete_atom) {
++ x_auto_repeat_on(1);
++ XCloseDisplay(g_display);
++ exit(0);
++ }
++ break;
+ default:
+ printf("X event 0x%08x is unknown!\n",
+ ev.type);