diff options
author | B. Watson <yalhcru@gmail.com> | 2021-10-12 05:39:37 -0400 |
---|---|---|
committer | Willy Sudiarto Raharjo <willysr@slackbuilds.org> | 2021-10-13 00:52:46 +0700 |
commit | f0f12a5b5487a0b77b500cec38f0a46aab281d01 (patch) | |
tree | 67c993ce3f1db679a3e176a41abb58307258fd93 /games/xspacewarp/winclose.diff | |
parent | 30bcea97fcf0f7a1857f55ea3c256abf510c390e (diff) | |
download | slackbuilds-f0f12a5b5487a0b77b500cec38f0a46aab281d01.tar.xz |
games/xspacewarp: Fix window close button.
Signed-off-by: B. Watson <yalhcru@gmail.com>
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'games/xspacewarp/winclose.diff')
-rw-r--r-- | games/xspacewarp/winclose.diff | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/games/xspacewarp/winclose.diff b/games/xspacewarp/winclose.diff new file mode 100644 index 000000000000..15da48e27d24 --- /dev/null +++ b/games/xspacewarp/winclose.diff @@ -0,0 +1,78 @@ +diff -Naur xspacewarp-1.2/actions.cc xspacewarp-1.2.patched/actions.cc +--- xspacewarp-1.2/actions.cc 2021-10-12 04:25:30.580232070 -0400 ++++ xspacewarp-1.2.patched/actions.cc 2021-10-12 05:37:05.063841685 -0400 +@@ -287,6 +287,7 @@ + break; + case 'n': // quit xspacewarp + cout << "Live long and prosper!" << endl; ++ XCloseDisplay(XtDisplay(w)); + exit(0); + default: + cerr << "xspacewarp: replay: unknown argument in X defaults." << endl; +@@ -310,6 +311,12 @@ + } + } + ++void quit(Widget w, XEvent *event, String *str, Cardinal *len) { ++ if(event->type == ClientMessage && ((Atom) event->xclient.data.l[0]) == wm_delete_window) { ++ XCloseDisplay(XtDisplay(w)); ++ exit(0); ++ } ++} + + // not an action but invoked by one. + // Initialize Jovian AI data and start AppTimeOuts so jovians +diff -Naur xspacewarp-1.2/globals.hh xspacewarp-1.2.patched/globals.hh +--- xspacewarp-1.2/globals.hh 1995-12-29 02:41:39.000000000 -0500 ++++ xspacewarp-1.2.patched/globals.hh 2021-10-12 05:03:56.900022417 -0400 +@@ -24,6 +24,7 @@ + extern Pixmap pixmap; + extern GC def_GC, defrv_GC, faserGC, faserGC_rv, torpGC, torpGC_rv, explodeGC; + extern GC endeverGC, baseGC, jovianGC, starGC, blackholeGC; ++extern Atom wm_delete_window; + + extern Sector universe[UROWS][UCOLS]; + extern GameState gamestate; +diff -Naur xspacewarp-1.2/xprep.cc xspacewarp-1.2.patched/xprep.cc +--- xspacewarp-1.2/xprep.cc 2021-10-12 04:25:30.587232070 -0400 ++++ xspacewarp-1.2.patched/xprep.cc 2021-10-12 05:23:53.950913600 -0400 +@@ -28,6 +28,7 @@ + static int read_dashes(const char *, char *); + static void check_values(void); + ++Atom wm_delete_window; + + void xprep(int argc, char **argv) + { +@@ -66,6 +67,10 @@ + + XtRealizeWidget(toplevel); + ++ wm_delete_window = XInternAtom(XtDisplay(toplevel), "WM_DELETE_WINDOW", False); ++ XSetWMProtocols(XtDisplay(toplevel), XtWindow(toplevel), &wm_delete_window, 1); ++ XtOverrideTranslations(toplevel, XtParseTranslationTable("<Message>WM_PROTOCOLS: quit()")); ++ + // if desired, install an invisible mouse cursor + // that does not block view of xspacewarp. + +diff -Naur xspacewarp-1.2/xprep.hh xspacewarp-1.2.patched/xprep.hh +--- xspacewarp-1.2/xprep.hh 2021-10-12 04:25:30.588232069 -0400 ++++ xspacewarp-1.2.patched/xprep.hh 2021-10-12 05:29:26.455883374 -0400 +@@ -39,6 +39,7 @@ + extern void endinput(Widget, XEvent *, String *, Cardinal *); + extern void replay(Widget, XEvent *, String *, Cardinal *); + extern void pause(Widget, XEvent *, String *, Cardinal *); ++extern void quit(Widget, XEvent *, String *, Cardinal *); + + static XtActionsRec actions[] = + { +@@ -58,7 +59,8 @@ + {(char*)"backspace", (XtActionProc)backspace}, + {(char*)"endinput", (XtActionProc)endinput}, + {(char*)"replay", (XtActionProc)replay}, +- {(char*)"pause", (XtActionProc)pause} ++ {(char*)"pause", (XtActionProc)pause}, ++ {(char*)"quit", (XtActionProc)quit}, + }; + + |