diff options
-rw-r--r-- | mail/em-folder-tree-model.c | 31 | ||||
-rw-r--r-- | mail/em-folder-tree-model.h | 2 | ||||
-rw-r--r-- | mail/em-folder-tree.c | 14 |
3 files changed, 25 insertions, 22 deletions
diff --git a/mail/em-folder-tree-model.c b/mail/em-folder-tree-model.c index bbf1824297..4092fe1463 100644 --- a/mail/em-folder-tree-model.c +++ b/mail/em-folder-tree-model.c @@ -678,10 +678,11 @@ folder_tree_model_get_sent_folder_uri (ESourceRegistry *registry, void em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, GtkTreeIter *iter, - EMFolderTreeModelStoreInfo *si, + CamelStore *store, CamelFolderInfo *fi, gint fully_loaded) { + EMFolderTreeModelStoreInfo *si; GtkTreeRowReference *path_row; GtkTreeStore *tree_store; MailFolderCache *folder_cache; @@ -704,6 +705,14 @@ em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, gboolean store_is_local; gchar *uri; + g_return_if_fail (EM_IS_FOLDER_TREE_MODEL (model)); + g_return_if_fail (iter != NULL); + g_return_if_fail (CAMEL_IS_STORE (store)); + g_return_if_fail (fi != NULL); + + si = g_hash_table_lookup (model->priv->store_index, store); + g_return_if_fail (si != NULL); + /* Make sure we don't already know about it. */ if (g_hash_table_lookup (si->full_hash, fi->full_name)) return; @@ -714,7 +723,7 @@ em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, folder_cache = e_mail_session_get_folder_cache (session); registry = e_mail_session_get_registry (session); - uid = camel_service_get_uid (CAMEL_SERVICE (si->store)); + uid = camel_service_get_uid (CAMEL_SERVICE (store)); store_is_local = (g_strcmp0 (uid, E_MAIL_SESSION_LOCAL_UID) == 0); if (!fully_loaded) @@ -725,7 +734,7 @@ em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, path_row = gtk_tree_row_reference_new (GTK_TREE_MODEL (model), path); gtk_tree_path_free (path); - uri = e_mail_folder_uri_build (si->store, fi->full_name); + uri = e_mail_folder_uri_build (store, fi->full_name); g_hash_table_insert ( si->full_hash, g_strdup (fi->full_name), path_row); @@ -737,7 +746,7 @@ em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, * be functionised. */ unread = fi->unread; folder = mail_folder_cache_ref_folder ( - folder_cache, si->store, fi->full_name); + folder_cache, store, fi->full_name); if (folder != NULL) { folder_is_drafts = em_utils_folder_is_drafts (registry, folder); folder_is_outbox = em_utils_folder_is_outbox (registry, folder); @@ -788,10 +797,10 @@ em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, gchar *sent_folder_uri; folder_tree_model_get_drafts_folder_uri ( - registry, si->store, &drafts_folder_uri); + registry, store, &drafts_folder_uri); folder_tree_model_get_sent_folder_uri ( - registry, si->store, &sent_folder_uri); + registry, store, &sent_folder_uri); if (!folder_is_drafts && drafts_folder_uri != NULL) { folder_is_drafts = e_mail_folder_uri_equal ( @@ -824,7 +833,7 @@ em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, gtk_tree_store_set ( tree_store, iter, COL_STRING_DISPLAY_NAME, display_name, - COL_OBJECT_CAMEL_STORE, si->store, + COL_OBJECT_CAMEL_STORE, store, COL_STRING_FULL_NAME, fi->full_name, COL_STRING_ICON_NAME, icon_name, COL_UINT_FLAGS, flags, @@ -856,7 +865,7 @@ em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, gtk_tree_store_set ( tree_store, &sub, COL_STRING_DISPLAY_NAME, _("Loading..."), - COL_OBJECT_CAMEL_STORE, si->store, + COL_OBJECT_CAMEL_STORE, store, COL_STRING_FULL_NAME, NULL, COL_STRING_ICON_NAME, NULL, COL_BOOL_LOAD_SUBDIRS, FALSE, @@ -890,7 +899,7 @@ em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, } em_folder_tree_model_set_folder_info ( - model, &sub, si, fi, fully_loaded); + model, &sub, store, fi, fully_loaded); fi = fi->next; } while (fi); } @@ -950,7 +959,7 @@ folder_tree_model_folder_subscribed_cb (CamelStore *store, gtk_tree_store_append (GTK_TREE_STORE (model), &iter, &parent); - em_folder_tree_model_set_folder_info (model, &iter, si, fi, TRUE); + em_folder_tree_model_set_folder_info (model, &iter, store, fi, TRUE); } static void @@ -1062,7 +1071,7 @@ folder_tree_model_folder_renamed_cb (CamelStore *store, gtk_tree_path_free (path); gtk_tree_store_append (GTK_TREE_STORE (model), &iter, &root); - em_folder_tree_model_set_folder_info (model, &iter, si, info, TRUE); + em_folder_tree_model_set_folder_info (model, &iter, store, info, TRUE); } static void diff --git a/mail/em-folder-tree-model.h b/mail/em-folder-tree-model.h index af5fbe1dc7..d33b385aab 100644 --- a/mail/em-folder-tree-model.h +++ b/mail/em-folder-tree-model.h @@ -126,7 +126,7 @@ void em_folder_tree_model_set_session void em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, GtkTreeIter *iter, - EMFolderTreeModelStoreInfo *si, + CamelStore *store, CamelFolderInfo *fi, gint fully_loaded); void em_folder_tree_model_add_store diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c index 3406a6aae9..f7e7afd197 100644 --- a/mail/em-folder-tree.c +++ b/mail/em-folder-tree.c @@ -205,7 +205,6 @@ folder_tree_get_folder_info_cb (CamelStore *store, GAsyncResult *result, AsyncContext *context) { - struct _EMFolderTreeModelStoreInfo *si; CamelFolderInfo *folder_info; CamelFolderInfo *child_info; EAlertSink *alert_sink; @@ -281,12 +280,6 @@ folder_tree_get_folder_info_cb (CamelStore *store, * subscribed to any folders yet, folder_info may legitimately be * NULL at this point. We handle that case below. Proceed. */ - /* Check if the store has been removed. */ - si = em_folder_tree_model_lookup_store_info ( - EM_FOLDER_TREE_MODEL (model), store); - if (si == NULL) - goto exit; - /* Make sure we still need to load the tree subfolders. */ iter_is_placeholder = FALSE; @@ -353,8 +346,9 @@ folder_tree_get_folder_info_cb (CamelStore *store, GtkTreeRowReference *reference; /* Check if we already have this row cached. */ - reference = g_hash_table_lookup ( - si->full_hash, child_info->full_name); + reference = em_folder_tree_model_get_row_reference ( + EM_FOLDER_TREE_MODEL (model), + store, child_info->full_name); if (reference == NULL) { /* If we're on a placeholder row, reuse @@ -368,7 +362,7 @@ folder_tree_get_folder_info_cb (CamelStore *store, em_folder_tree_model_set_folder_info ( EM_FOLDER_TREE_MODEL (model), - &iter, si, child_info, TRUE); + &iter, store, child_info, TRUE); } child_info = child_info->next; |