diff options
Diffstat (limited to 'system/kegs/allow_window_close.diff')
-rw-r--r-- | system/kegs/allow_window_close.diff | 63 |
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"); + } |