[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
exiting app doesn't seem to work for me as documented
- From: "Karl H. Beckers" <karl h beckers gmx net>
- To: gtk-app-devel-list gnome org
- Subject: exiting app doesn't seem to work for me as documented
- Date: Sat, 12 Jul 2003 10:14:03 +0200
Hi all,
trying to build this gtk2 GUI with glade, but it won't quit
properly.
If I make the delete event return FALSE, it still doesn't seem
to trigger the destroy event (correctly) and seems to loop in
g_main_context_dispatch. I always need to CTRL-C, though the
window dissappears.
(find gdb session below)
What completely beats me is that I get the HelloWorld example
from the docs to do it.
If I explicitly call on_window1_destroy_event from my delete
callback (prior to the return, of course) and have gtk_main_quit()
and exit() in the destroy callback things kinda work but it seems
awkward and like it should work differently.
(Also, if I leave away the exit(0) and want to return to main(),
I get a segfault.)
All hints or rtfms welcome,
TIA,
Karl.
Here are my callbacks:
> gboolean
> on_window1_delete_event (GtkWidget *widget,
> GdkEvent *event,
> gpointer user_data)
> {
>
> g_print("delete event occurred!\n");
> // gtk_signal_emit_by_name((GtkObject*) widget, "destroy_event");
> return FALSE;
> }
>
>
> gboolean
> on_window1_destroy_event (GtkWidget *widget,
> GdkEvent *event,
> gpointer user_data)
> {
>
> g_print("destroy event occurred!\n");
> gtk_main_quit ();
> // return FALSE;
> }
>
set up like this:
> g_signal_connect ((gpointer) window1, "delete_event",
> G_CALLBACK (on_window1_delete_event),
> NULL);
> g_signal_connect ((gpointer) window1, "destroy_event",
> G_CALLBACK (on_window1_destroy_event),
> NULL);
and main.c:
> int
> main (int argc, char *argv[])
> {
> GtkWidget *window1;
> GtkWidget *dialog1;
>
> #ifdef ENABLE_NLS
> bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
> bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
> textdomain (GETTEXT_PACKAGE);
> #endif
>
> gtk_set_locale ();
> gtk_init (&argc, &argv);
>
> add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps");
>
> /*
> * The following code was added by Glade to create one of each component
> * (except popup menus), just so that you see something after building
> * the project. Delete any components that you don't want shown initially.
> */
> window1 = create_window1 ();
> gtk_widget_show (window1);
> // dialog1 = create_dialog1 ();
> // gtk_widget_show (dialog1);
>
> gtk_main ();
> exit (0);
> return 0;
> }
gdb session:
> kb87850@ono-sendai(570)> gdb project2
> GNU gdb 2002-04-01-cvs
> Copyright 2002 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB. Type "show warranty" for details.
> This GDB was configured as "i386-linux"...
> (gdb) break on_window1_delete_event
> Breakpoint 1 at 0x804d67b: file callbacks.c, line 20.
> (gdb) break on_window1_destroy_event
> Breakpoint 2 at 0x804d693: file callbacks.c, line 31.
> (gdb) run
> Starting program: /export/home/kb87850/Projekte/project2/src/project2
> delete event occurred!
>
> Breakpoint 1, on_window1_delete_event (widget=0x8084318, event=0x80e81a8, user_data=0x0) at callbacks.c:20
> 20 return FALSE;
> (gdb) s
> 0x400da412 in _gtk_marshal_BOOLEAN__BOXED () from /usr/lib/libgtk-x11-2.0.so.0
> (gdb) s
> Single stepping until exit from function _gtk_marshal_BOOLEAN__BOXED,
> which has no line number information.
> 0x40346e2b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
> (gdb) s
> Single stepping until exit from function g_closure_invoke,
> which has no line number information.
> 0x40359f23 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
> (gdb) s
> Single stepping until exit from function g_signal_emit_by_name,
> which has no line number information.
> 0x40358807 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
> (gdb) s
> Single stepping until exit from function g_signal_emit_valist,
> which has no line number information.
> 0x403671d0 in g_value_transforms_init () from /usr/lib/libgobject-2.0.so.0
> (gdb) s
> Single stepping until exit from function g_value_transforms_init,
> which has no line number information.
> 0x4035895e in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
> (gdb) s
> Single stepping until exit from function g_signal_emit_valist,
> which has no line number information.
> 0x40358a45 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
> (gdb) s
> Single stepping until exit from function g_signal_emit,
> which has no line number information.
> 0x40195f02 in gtk_widget_send_expose () from /usr/lib/libgtk-x11-2.0.so.0
> (gdb) s
> Single stepping until exit from function gtk_widget_send_expose,
> which has no line number information.
> 0x40195b60 in gtk_widget_event () from /usr/lib/libgtk-x11-2.0.so.0
> (gdb) s
> Single stepping until exit from function gtk_widget_event,
> which has no line number information.
> 0x400d91ed in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
> (gdb) s
> Single stepping until exit from function gtk_main_do_event,
> which has no line number information.
> 0x4026c6ad in _gdk_events_queue () from /usr/lib/libgdk-x11-2.0.so.0
> (gdb) s
> Single stepping until exit from function _gdk_events_queue,
> which has no line number information.
> 0x4039bf59 in g_get_current_time () from /usr/lib/libglib-2.0.so.0
> (gdb) s
> Single stepping until exit from function g_get_current_time,
> which has no line number information.
> 0x4039cd77 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
> (gdb) s
> Single stepping until exit from function g_main_context_dispatch,
> which has no line number information.
>
>
>
> Program received signal SIGINT, Interrupt.
> 0x404a9bb0 in poll () from /lib/libc.so.6
> (gdb) q
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]