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.diff63
1 files changed, 32 insertions, 31 deletions
diff --git a/system/kegs/allow_window_close.diff b/system/kegs/allow_window_close.diff
index 538022e044..b1343b2e89 100644
--- a/system/kegs/allow_window_close.diff
+++ b/system/kegs/allow_window_close.diff
@@ -1,35 +1,36 @@
-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 @@
+diff -Naur kegs.1.05/src/xdriver.c kegs.1.05.patched/src/xdriver.c
+--- kegs.1.05/src/xdriver.c 2021-01-24 18:37:34.000000000 -0500
++++ kegs.1.05.patched/src/xdriver.c 2021-02-25 17:53:28.054595900 -0500
+@@ -629,13 +629,10 @@
0, &my_winSizeHints, 0, &my_winClassHint);
- XMapRaised(g_display, g_a2_win);
+ XMapRaised(g_display, x_win);
+
+- if(win_info_ptr != &g_mainwin_info) {
+- // Debugger window
+ win_info_ptr->delete_atom = XInternAtom(g_display,
+ "WM_DELETE_WINDOW", False);
+ XSetWMProtocols(g_display, x_win, &(win_info_ptr->delete_atom),
+ 1);
+- }
-+ 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);
+@@ -1092,9 +1089,15 @@
+ case ClientMessage:
+ win_info_ptr = x_find_xwin(ev.xclient.window);
+ if(ev.xclient.data.l[0] == win_info_ptr->delete_atom) {
+- // This is a WM_DELETE_WINDOW event
+- // Just unmap the window
+- win_info_ptr->kimage_ptr->active = 0;
++ if(win_info_ptr == &g_debugwin_info) {
++ // This is a WM_DELETE_WINDOW event
++ // Just unmap the window
++ win_info_ptr->kimage_ptr->active = 0;
++ } else {
++ x_auto_repeat_on(1);
++ XCloseDisplay(g_display);
++ exit(0);
++ }
+ } else {
+ printf("unknown ClientMessage\n");
+ }