aboutsummaryrefslogtreecommitdiff
path: root/system/kegs/allow_window_close.diff
blob: 538022e0441383e41327e1cde5076e79d80c5356 (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 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);