evolution r37020 - in branches/kill-bonobo: mail shell



Author: mbarnes
Date: Fri Jan  9 05:13:07 2009
New Revision: 37020
URL: http://svn.gnome.org/viewvc/evolution?rev=37020&view=rev

Log:
Fix a weird UI merging bug.


Modified:
   branches/kill-bonobo/mail/e-mail-shell-view.c
   branches/kill-bonobo/shell/e-shell-view.c

Modified: branches/kill-bonobo/mail/e-mail-shell-view.c
==============================================================================
--- branches/kill-bonobo/mail/e-mail-shell-view.c	(original)
+++ branches/kill-bonobo/mail/e-mail-shell-view.c	Fri Jan  9 05:13:07 2009
@@ -71,6 +71,7 @@
 	EShellWindow *shell_window;
 	GtkUIManager *ui_manager;
 	const gchar *basename;
+	gboolean view_is_active;
 
 	/* Chain up to parent's toggled() method. */
 	E_SHELL_VIEW_CLASS (parent_class)->toggled (shell_view);
@@ -79,15 +80,18 @@
 
 	shell_window = e_shell_view_get_shell_window (shell_view);
 	ui_manager = e_shell_window_get_ui_manager (shell_window);
+	view_is_active = e_shell_view_is_active (shell_view);
 	basename = E_MAIL_READER_UI_DEFINITION;
 
-	if (e_shell_view_is_active (shell_view)) {
+	if (view_is_active && priv->merge_id == 0) {
 		priv->merge_id = e_load_ui_definition (ui_manager, basename);
 		e_mail_reader_create_charset_menu (
 			E_MAIL_READER (priv->mail_shell_content),
 			ui_manager, priv->merge_id);
-	} else
+	} else if (!view_is_active && priv->merge_id != 0) {
 		gtk_ui_manager_remove_ui (ui_manager, priv->merge_id);
+		priv->merge_id = 0;
+	}
 
 	gtk_ui_manager_ensure_update (ui_manager);
 }

Modified: branches/kill-bonobo/shell/e-shell-view.c
==============================================================================
--- branches/kill-bonobo/shell/e-shell-view.c	(original)
+++ branches/kill-bonobo/shell/e-shell-view.c	Fri Jan  9 05:13:07 2009
@@ -349,16 +349,20 @@
 	EShellWindow *shell_window;
 	GtkUIManager *ui_manager;
 	const gchar *basename;
+	gboolean view_is_active;
 
 	shell_view_class = E_SHELL_VIEW_GET_CLASS (shell_view);
 	shell_window = e_shell_view_get_shell_window (shell_view);
 	ui_manager = e_shell_window_get_ui_manager (shell_window);
+	view_is_active = e_shell_view_is_active (shell_view);
 	basename = shell_view_class->ui_definition;
 
-	if (e_shell_view_is_active (shell_view))
+	if (view_is_active && priv->merge_id == 0)
 		priv->merge_id = e_load_ui_definition (ui_manager, basename);
-	else
+	else if (!view_is_active && priv->merge_id != 0) {
 		gtk_ui_manager_remove_ui (ui_manager, priv->merge_id);
+		priv->merge_id = 0;
+	}
 
 	gtk_ui_manager_ensure_update (ui_manager);
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]