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