/* -*-c-*-
*
- * $Id: xshutdown.c,v 1.2 1998/11/21 22:30:23 mdw Exp $
+ * $Id: xshutdown.c,v 1.5 1998/12/03 01:00:19 mdw Exp $
*
* Pretty GTK interface to waking up an xwait
*
/*----- Revision history --------------------------------------------------*
*
* $Log: xshutdown.c,v $
+ * Revision 1.5 1998/12/03 01:00:19 mdw
+ * Honour escape presses in the dialogue boxes.
+ *
+ * Revision 1.4 1998/12/03 00:39:45 mdw
+ * Force focus when starting up.
+ *
+ * Revision 1.3 1998/11/30 22:36:49 mdw
+ * Tidy up tabbing in help texts very slightly.
+ *
* Revision 1.2 1998/11/21 22:30:23 mdw
* Support GNU-style long options throughout, and introduce proper help
* text to all programs. Update manual pages to match.
#include <gtk/gtk.h>
#include <gdk/gdkprivate.h>
+#include <gdk/gdkkeysyms.h>
+#include "mdwfocus.h"
#include "mdwopt.h"
#include "quis.h"
#include "xwait.h"
/*----- Main code ---------------------------------------------------------*/
+/* --- @check_escape@ --- *
+ *
+ * Arguments: @GtkWidget *w@ = widget raising the signal
+ * @GdkEventKey *ev@ = pointer to event data
+ * @gpointer *p@ = widget to activate in response
+ *
+ * Returns: ---
+ *
+ * Use: Activates a widget when an escape keypress is detected.
+ */
+
+static gboolean check_escape(GtkWidget *w, GdkEventKey *ev, gpointer *p)
+{
+ if (ev->keyval == GDK_Escape) {
+ if (p)
+ gtk_widget_activate(GTK_WIDGET(p));
+ else
+ gtk_object_destroy(GTK_OBJECT(w));
+ return (1);
+ }
+ return (0);
+}
+
/* --- @cancel@ --- *
*
* Just end the main loop.
"-u, --usage Display a short usage summary\n"
"-v, --version Display the program's version number\n"
"\n"
-"-a, --atom=ATOM Select the atom that `xwait' is waiting for\n"
+"-a, --atom=ATOM\t Select the atom that `xwait' is waiting for\n"
"-m, --msg=MSG Select the message to send to `xwait'\n"
"-p, --prompt=PROMPT Select the prompt string in the confirmation box\n"
"-t, --title=TITLE Select the title string in the confirmation box\n",
gtk_window_set_title(GTK_WINDOW(win), "xshutdown");
gtk_signal_connect(GTK_OBJECT(win), "destroy",
GTK_SIGNAL_FUNC(cancel), 0);
+ gtk_signal_connect(GTK_OBJECT(win), "key_press_event",
+ GTK_SIGNAL_FUNC(check_escape), 0);
gtk_box_set_homogeneous(GTK_BOX(GTK_DIALOG(win)->action_area), 0);
/* --- Make everything work --- */
+ gtk_widget_realize(win);
+ mdwfocus(win);
gtk_widget_show(win);
gtk_main();
exit(EXIT_FAILURE);
/* --- Show the completed window --- */
+ gtk_signal_connect(GTK_OBJECT(win), "key_press_event",
+ GTK_SIGNAL_FUNC(check_escape), 0);
+ gtk_widget_realize(win);
+ mdwfocus(win);
gtk_widget_show(win);
}