Sophie

Sophie

distrib > Mandriva > 2009.0 > x86_64 > by-pkgid > 26ba033f3de93f808197f1611460d3c0 > files > 4

xmris-4.0.5-7mdv2009.0.src.rpm

diff -p -up xmris.4.0.5/xmris.c.orig xmris.4.0.5/xmris.c
--- xmris.4.0.5/xmris.c.orig	2008-05-06 18:32:58.000000000 -0300
+++ xmris.4.0.5/xmris.c	2008-05-06 18:33:39.000000000 -0300
@@ -55,6 +55,8 @@ static VOIDFUNC action_pause
     PROTOARG((Widget, XEvent *, String *, Cardinal *));
 static VOIDFUNC action_unmap
     PROTOARG((Widget, XEvent *, String *, Cardinal *));
+static VOIDFUNC action_quit
+    PROTOARG((Widget, XEvent *, String *, Cardinal *));
 static VOIDFUNC age_scores PROTOARG((VOIDARG));
 static PROTOANIMATE(animate_death);
 static PROTOANIMATE(animate_pause);
@@ -75,6 +77,7 @@ static XtActionsRec actions[] =
   {"map", action_map},
   {"unmap", action_unmap},
   {"expose", action_expose},
+  {"quit", action_quit},
 };
 /*}}}*/
 /*{{{  static char CONST garden_translations[] =*/
@@ -96,6 +99,7 @@ static char CONST toplevel_translations[
 "\
 <MapNotify>:map()\n\
 <UnmapNotify>:unmap()\n\
+<Message>WM_PROTOCOLS: quit()\n\
 ";
 /*}}}*/
 /*}}}*/
@@ -116,6 +120,22 @@ ARGSEP  Cardinal  *num_params
   return;
 }
 /*}}}*/
+/*{{{  void action_quit(widget, event, params, num_params)*/
+static VOIDFUNC action_quit
+FUNCARG((widget, event, params, num_params),
+	Widget    widget
+ARGSEP  XEvent    *event
+ARGSEP  String    *params
+ARGSEP  Cardinal  *num_params
+)
+{
+#ifdef DEBUGEVENTLOOP
+  fprintf(stderr, "action_quit(0x%lx)\n", XtWindow(widget));
+#endif /* DEBUGEVENTLOOP */
+  set_key_default();
+  global.quit = 1;
+}
+/*}}}*/
 /*{{{  void action_keypress(widget, event, params, num_params)*/
 static VOIDFUNC action_keypress
 FUNCARG((widget, event, params, num_params),
@@ -1235,6 +1255,7 @@ ARGSEP  char CONST **argv
 )
 {
   PROTOANIMATE((*animate));
+  Atom wm_delete_window;
   
   myname = *argv ? *argv : "Xmris";
 #ifndef TRANSPUTER
@@ -1280,6 +1301,10 @@ ARGSEP  char CONST **argv
   XtOverrideTranslations(display.toplevel,
       XtParseTranslationTable(toplevel_translations));
   XtRealizeWidget(display.toplevel);
+  wm_delete_window = XInternAtom(XtDisplay(display.toplevel), "WM_DELETE_WINDOW",
+				 False);
+  (void)XSetWMProtocols(XtDisplay(display.toplevel), XtWindow(display.toplevel),
+			&wm_delete_window, 1);
 #ifdef DEBUGEVENTLOOP
   printf("Toplevel is 0x%lx\n", (long)XtWindow(display.toplevel));
   printf("Garden is 0x%lx\n", (long)XtWindow(display.garden));