diff src/layout_util.c @ 1470:38925ff71a46

do not re-create ui_manager at layout change
author nadvornik
date Fri, 20 Mar 2009 22:48:01 +0000
parents 607c60506863
children b4001cb9fbc4
line wrap: on
line diff
--- a/src/layout_util.c	Fri Mar 20 21:28:31 2009 +0000
+++ b/src/layout_util.c	Fri Mar 20 22:48:01 2009 +0000
@@ -1760,6 +1760,8 @@
 	layout_actions_setup_marks(lw);
 	layout_actions_setup_editors(lw);
 	layout_copy_path_update(lw);
+
+	layout_actions_add_window(lw, lw->window);
 }
 
 void layout_editors_reload_all(void)
@@ -1800,15 +1802,20 @@
 
 GtkWidget *layout_actions_menu_bar(LayoutWindow *lw)
 {
-	return gtk_ui_manager_get_widget(lw->ui_manager, "/MainMenu");
+	if (lw->menu_bar) return lw->menu_bar;
+	lw->menu_bar = gtk_ui_manager_get_widget(lw->ui_manager, "/MainMenu");
+	g_object_ref(lw->menu_bar);
+	return lw->menu_bar;
 }
 
 GtkWidget *layout_actions_toolbar(LayoutWindow *lw)
 {
-	GtkWidget *bar = gtk_ui_manager_get_widget(lw->ui_manager, "/ToolBar");
-	gtk_toolbar_set_icon_size(GTK_TOOLBAR(bar), GTK_ICON_SIZE_SMALL_TOOLBAR);
-	gtk_toolbar_set_style(GTK_TOOLBAR(bar), GTK_TOOLBAR_ICONS);
-	return bar;
+	if (lw->toolbar) return lw->toolbar;
+	lw->toolbar = gtk_ui_manager_get_widget(lw->ui_manager, "/ToolBar");
+	g_object_ref(lw->toolbar);
+	gtk_toolbar_set_icon_size(GTK_TOOLBAR(lw->toolbar), GTK_ICON_SIZE_SMALL_TOOLBAR);
+	gtk_toolbar_set_style(GTK_TOOLBAR(lw->toolbar), GTK_TOOLBAR_ICONS);
+	return lw->toolbar;
 }
 
 void layout_toolbar_clear(LayoutWindow *lw)
@@ -2164,6 +2171,7 @@
 
 GtkWidget *layout_bars_prepare(LayoutWindow *lw, GtkWidget *image)
 {
+	if (lw->utility_box) return lw->utility_box;
 	lw->utility_box = gtk_hbox_new(FALSE, PREF_PAD_GAP);
 	lw->utility_paned = gtk_hpaned_new();
 	gtk_box_pack_start(GTK_BOX(lw->utility_box), lw->utility_paned, TRUE, TRUE, 0);
@@ -2173,6 +2181,7 @@
 	
 	gtk_widget_show(image);
 
+	g_object_ref(lw->utility_box);
 	return lw->utility_box;
 }