Re: 6 days till Bug Horizon
On Wed, Feb 23, 2000 at 10:54:11PM -0500, Daniel Burrows was heard to say:
> On Wed, Feb 23, 2000 at 11:52:46PM +0100, Richard Braakman was heard to say:
> > Package: gnome-chess (debian/main).
> > Maintainer: Vincent Renardias <vincent@debian.org>
> > 56036 gnome-chess: want exit via window manager close button
>
> Ok, spinning forever when you get a destroy event is nasty, but is it really
> release-critical?
>
> OTOH, it doesn't look like it should be too hard to patch.. (crossing fingers,
> toes, etc) .. just catch the destroy and kill children/background threads (the
> code to do this should already be there, to handle File/Quit) I could even do
> it if I had time (I don't even have time to write this email :) )
Ok, I have time now :) I've attached a shot at this to this email..it may
or may not work; unfortunately, I'm on a text terminal at the moment and
can't test it. It compiles, though! The main possible gotchas that I can
see are that the gnome_app framework (which I haven't used much) might need
me to insert the callback in a different way, and that the return of the
delete funtion might be wrong (you have to return either 1 or 0 and I can
never remember which; if I got it wrong, the window won't close at all but
the engines will still be stopped..)
Daniel
--
X is the second worst window system ever invented.
Everything else is tied for first.
Only in gnome-chess-0.2.4.prev: gnome-chess.spec
diff -ru gnome-chess-0.2.4.prev/src/main.c gnome-chess-0.2.4/src/main.c
--- gnome-chess-0.2.4.prev/src/main.c Tue Oct 26 17:11:15 1999
+++ gnome-chess-0.2.4/src/main.c Fri Feb 25 11:37:02 2000
@@ -58,6 +58,20 @@
{ NULL, '\0', 0, NULL, 0 }
};
+int main_delete(GtkWidget *widget, gpointer data);
+
+int main_delete(GtkWidget *widget, gpointer data) {
+ /* Copied from menus.cc -- meant to keep the children from spinning ad
+ * infinitum if the main windor is closed.
+ * A quick hack to fix an RCB bug that shouldn't be, I don't know enough
+ * about gnome_app to know what really should be done..
+ * -- DNB
+ */
+ engine_destroy_all();
+ gtk_main_quit ();
+ return 1;
+}
+
int main(int argc,char *argv[]) {
GtkWidget *box;
@@ -83,6 +97,11 @@
/* Ugly hack to get rid of a temporary zvt problem */
gtk_widget_queue_resize(board.messages);
+
+ gtk_signal_connect( GTK_OBJECT (app),
+ "delete_event",
+ GTK_SIGNAL_FUNC(main_delete),
+ NULL);
first_chess_programm = NULL;
/* Check to see if we got command line args for an engine */
Reply to: