[anjal] Fix an issue where there is a race between loading the folder tree and creating the view. At times s



commit bfc4f232a6f21a434fdb0b964ab79f15ac281cae
Author: Srinivasa Ragavan <sragavan gnome org>
Date:   Wed Jan 20 19:09:13 2010 +0530

    Fix an issue where there is a race between loading the folder tree and
    creating the view. At times selected folder isn't loaded on startup.

 src/module/anjal-shell-view-private.c |   22 ++++++++++++++++++++--
 src/module/anjal-shell-view-private.h |    1 +
 2 files changed, 21 insertions(+), 2 deletions(-)
---
diff --git a/src/module/anjal-shell-view-private.c b/src/module/anjal-shell-view-private.c
index a48784e..1832af6 100644
--- a/src/module/anjal-shell-view-private.c
+++ b/src/module/anjal-shell-view-private.c
@@ -22,6 +22,7 @@
 #include "anjal-shell-view-private.h"
 #include <shell/e-shell-searchbar.h>
 
+
 static void
 mail_shell_view_folder_tree_selected_cb (AnjalShellView *mail_shell_view,
                                          const gchar *full_name,
@@ -38,8 +39,16 @@ mail_shell_view_folder_tree_selected_cb (AnjalShellView *mail_shell_view,
 		!(flags & CAMEL_FOLDER_NOSELECT) &&
 		full_name != NULL;
 	
-	anjal_mail_view_set_folder_uri (mail_shell_view->priv->view, uri);
-	e_shell_view_update_actions (shell_view);
+	if (mail_shell_view->priv->view) {
+		anjal_mail_view_set_folder_uri (mail_shell_view->priv->view, uri);
+		e_shell_view_update_actions (shell_view);
+	} else {
+		if (mail_shell_view->priv->pending_uri) {
+			g_warning ("Ignoring loading %s\n", mail_shell_view->priv->pending_uri);
+			g_free (mail_shell_view->priv->pending_uri);
+		}
+		mail_shell_view->priv->pending_uri = g_strdup(uri);
+	}
 }
 
 static gboolean
@@ -144,13 +153,22 @@ anjal_shell_view_set_mail_view (AnjalShellView *mail_shell_view,
 	mail_shell_sidebar = ANJAL_SHELL_SIDEBAR (shell_sidebar);
 	folder_tree = anjal_shell_sidebar_get_folder_tree (mail_shell_sidebar);
 	anjal_mail_view_set_folder_tree (mail_shell_view->priv->view, (GtkWidget *)folder_tree);
+
+	if (priv->pending_uri) {
+		anjal_mail_view_set_folder_uri (mail_shell_view->priv->view, priv->pending_uri);
+		e_shell_view_update_actions (shell_view);
+		g_free (priv->pending_uri);
+		priv->pending_uri = NULL;
+	}
 }
 
 void
 anjal_shell_view_private_init (AnjalShellView *mail_shell_view,
                                 EShellViewClass *shell_view_class)
 {
+	AnjalShellViewPrivate *priv = mail_shell_view->priv;
 
+	priv->pending_uri = NULL;
 }
 
 static void
diff --git a/src/module/anjal-shell-view-private.h b/src/module/anjal-shell-view-private.h
index 53b3226..947d7ba 100644
--- a/src/module/anjal-shell-view-private.h
+++ b/src/module/anjal-shell-view-private.h
@@ -150,6 +150,7 @@ struct _AnjalShellViewPrivate {
 	guint show_deleted : 1;
 
 	AnjalMailView *view;
+	char *pending_uri;
 };
 
 void		anjal_shell_view_private_init



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