Blob Blame History Raw
This patch is based on changeset:7042 in upstream svn.

--- bluefish-2.0.3/src/gui.c
+++ bluefish-2.0.3/src/gui.c
@@ -298,8 +298,9 @@
 	return bfwin->leftpanel_notebook;
 }
 
-static void left_panel_cleanup(Tbfwin *bfwin) {
-	DEBUG_MSG("left_panel_cleanup called for bfwin %p\n",bfwin);
+static void left_panel_destroy_cleanup(Tbfwin *bfwin) {
+	g_print("left_panel_destroy_cleanup called for bfwin %p\n", bfwin);
+	gtk_widget_destroy(bfwin->leftpanel_notebook);
 	bmark_cleanup(bfwin);
 	fb2_cleanup(bfwin);
 	if (main_v->sidepanel_destroygui) {
@@ -319,9 +320,7 @@
 void left_panel_rebuild(Tbfwin *bfwin) {
 	if (bfwin->hpane) {
 		DEBUG_MSG("left_panel_rebuild, destroying widgets for bfwin %p\n",bfwin);
-		gtk_widget_destroy(bfwin->leftpanel_notebook);
-		DEBUG_MSG("left_panel_rebuild, cleanup for bfwin %p\n",bfwin);
-		left_panel_cleanup(bfwin);
+		left_panel_destroy_cleanup(bfwin);
 		DEBUG_MSG("left_panel_rebuild, re-init\n");
 		left_panel_build(bfwin);
 		if (main_v->props.left_panel_left) {
@@ -352,8 +351,8 @@
 			gtk_container_remove(GTK_CONTAINER(bfwin->middlebox), bfwin->notebook_box);
 		} else {
 			gtk_container_remove(GTK_CONTAINER(bfwin->hpane), bfwin->notebook_box);
+			left_panel_destroy_cleanup(bfwin);
 			gtk_widget_destroy(bfwin->hpane);
-			left_panel_cleanup(bfwin);
 			bfwin->hpane = NULL;
 		}
 	}
@@ -781,8 +780,8 @@
 #ifdef HAVE_LIBENCHANT
 	unload_spell_dictionary(bfwin);
 #endif
-	fb2_cleanup(bfwin);
-	bmark_cleanup(bfwin);
+	g_print("gui_bfwin_cleanup called for bfwin %p\n",bfwin);
+	left_panel_destroy_cleanup(bfwin);
 	outputbox_cleanup(bfwin);
 	snr2_cleanup(bfwin);
 	g_object_unref(ifactory);
@@ -804,9 +803,9 @@
 	
 	main_v->bfwinlist = g_list_remove(main_v->bfwinlist, bfwin);
 	DEBUG_MSG("main_window_destroy_lcb, bfwin(%p) is removed from bfwinlist\n",bfwin);
-	gui_bfwin_cleanup(bfwin);
 	DEBUG_MSG("main_window_destroy_lcb, will destroy the window now\n");
 	gtk_widget_destroy(bfwin->main_window);
+	gui_bfwin_cleanup(bfwin);
 	DEBUG_MSG("main_window_destroy_lcb, going to free bfwin %p\n",bfwin);
 #ifdef IDENTSTORING
 	bftextview2_identifier_hash_destroy(bfwin);