svnno****@sourc*****
svnno****@sourc*****
Fri Jan 30 11:28:52 JST 2009
Revision: 3598 http://svn.sourceforge.jp/view?root=kazehakase&view=rev&rev=3598 Author: ikezoe Date: 2009-01-30 11:28:52 +0900 (Fri, 30 Jan 2009) Log Message: ----------- * src/kz-window.c, src/kz-notebook.[ch]: Disconnect all embed signals when destroying the windows to avoid " g_node_find: assertion `root != NULL' failed". Modified Paths: -------------- kazehakase/trunk/ChangeLog kazehakase/trunk/src/kz-notebook.c kazehakase/trunk/src/kz-notebook.h kazehakase/trunk/src/kz-window.c Modified: kazehakase/trunk/ChangeLog =================================================================== --- kazehakase/trunk/ChangeLog 2009-01-30 00:39:02 UTC (rev 3597) +++ kazehakase/trunk/ChangeLog 2009-01-30 02:28:52 UTC (rev 3598) @@ -2,6 +2,9 @@ * src/kz-autoscroller.c, src/sidebar/kz-tabtree.h, src/kz-sidebar.h, src/kz-icons.h: Include only <gtk/gtk.h>. + * src/kz-window.c, src/kz-notebook.[ch]: Disconnect all embed signals + when destroying the windows to avoid " g_node_find: assertion `root != + NULL' failed". 2009-01-29 Hiroyuki Ikezoe <poinc****@ikezo*****> Modified: kazehakase/trunk/src/kz-notebook.c =================================================================== --- kazehakase/trunk/src/kz-notebook.c 2009-01-30 00:39:02 UTC (rev 3597) +++ kazehakase/trunk/src/kz-notebook.c 2009-01-30 02:28:52 UTC (rev 3598) @@ -877,3 +877,17 @@ return KZ_NOTEBOOK_GET_PRIVATE(notebook)->tab_tree; } +void +kz_notebook_foreach_page (KzNotebook *notebook, + GFunc func, + gpointer user_data) +{ + GList *pages; + + pages = gtk_container_get_children(GTK_NOTEBOOK(notebook)); + if (!pages) + return; + g_list_foreach(pages, func, user_data); + g_list_free(pages); +} + Modified: kazehakase/trunk/src/kz-notebook.h =================================================================== --- kazehakase/trunk/src/kz-notebook.h 2009-01-30 00:39:02 UTC (rev 3597) +++ kazehakase/trunk/src/kz-notebook.h 2009-01-30 02:28:52 UTC (rev 3598) @@ -78,6 +78,9 @@ KzTabLabel *label); GtkWidget *kz_notebook_get_dragged_page (KzNotebook *notebook); GNode *kz_notebook_get_tree (KzNotebook *notebook); +void kz_notebook_foreach_page (KzNotebook *notebook, + GFunc func, + gpointer user_data); G_END_DECLS Modified: kazehakase/trunk/src/kz-window.c =================================================================== --- kazehakase/trunk/src/kz-window.c 2009-01-30 00:39:02 UTC (rev 3597) +++ kazehakase/trunk/src/kz-window.c 2009-01-30 02:28:52 UTC (rev 3598) @@ -1116,6 +1116,12 @@ return GTK_WIDGET_CLASS(kz_window_parent_class)->key_press_event(widget, event); } +static void +unset_each_embed_callbacks (gpointer data, gpointer user_data) +{ + kz_window_unset_embed_callbacks(KZ_WINDOW(user_data), + KZ_EMBED(data)); +} static void destroy (GtkObject *object) @@ -1123,6 +1129,12 @@ KzWindow *kz = KZ_WINDOW(object); KzWindowPrivate *priv = KZ_WINDOW_GET_PRIVATE(kz); + if (kz->notebook) { + kz_notebook_foreach_page(KZ_NOTEBOOK(kz->notebook), + unset_each_embed_callbacks, kz); + kz->notebook = NULL; + } + if (GTK_OBJECT_CLASS(kz_window_parent_class)->destroy) GTK_OBJECT_CLASS(kz_window_parent_class)->destroy(object); @@ -1573,7 +1585,6 @@ G_CALLBACK(cb_embed_close_tab), kz); } - void kz_window_load_url (KzWindow *kz, const gchar *url) {