[kazehakase-svn] [3598] * src/kz-window.c, src/kz-notebook.[ch]: Disconnect all embed signals

Zurück zum Archiv-Index

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)
 {



More information about the Kazehakase-cvs mailing list
Zurück zum Archiv-Index