aboutsummaryrefslogtreecommitdiffstats
path: root/mail/em-folder-tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/em-folder-tree.c')
-rw-r--r--mail/em-folder-tree.c41
1 files changed, 16 insertions, 25 deletions
diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c
index c7ee3ecff4..3406a6aae9 100644
--- a/mail/em-folder-tree.c
+++ b/mail/em-folder-tree.c
@@ -474,8 +474,7 @@ static void
folder_tree_expand_node (const gchar *key,
EMFolderTree *folder_tree)
{
- struct _EMFolderTreeModelStoreInfo *si = NULL;
- GtkTreeRowReference *row;
+ GtkTreeRowReference *row = NULL;
GtkTreeView *tree_view;
GtkTreeModel *model;
GtkTreePath *path;
@@ -502,23 +501,24 @@ folder_tree_expand_node (const gchar *key,
service = camel_session_ref_service (CAMEL_SESSION (session), uid);
- if (CAMEL_IS_STORE (service))
- si = em_folder_tree_model_lookup_store_info (
+ if (CAMEL_IS_STORE (service)) {
+ const gchar *folder_name;
+
+ if (p != NULL && p[1] != '\0')
+ folder_name = p + 1;
+ else
+ folder_name = NULL;
+
+ row = em_folder_tree_model_get_row_reference (
EM_FOLDER_TREE_MODEL (model),
- CAMEL_STORE (service));
+ CAMEL_STORE (service), folder_name);
+ }
- if (service != NULL)
- g_object_unref (service);
+ g_clear_object (&service);
- if (si == NULL)
+ if (row == NULL)
return;
- if (p != NULL && p[1]) {
- if (!(row = g_hash_table_lookup (si->full_hash, p + 1)))
- return;
- } else
- row = si->row;
-
path = gtk_tree_row_reference_get_path (row);
gtk_tree_view_expand_to_path (tree_view, path);
@@ -3614,17 +3614,8 @@ em_folder_tree_restore_state (EMFolderTree *folder_tree,
key_file, group_name, key, NULL);
if (expanded && success) {
- EMFolderTreeModelStoreInfo *si;
-
- si = em_folder_tree_model_lookup_store_info (
- folder_tree_model, store);
- if (si != NULL) {
- if (folder_name != NULL)
- reference = g_hash_table_lookup (
- si->full_hash, folder_name);
- else
- reference = si->row;
- }
+ reference = em_folder_tree_model_get_row_reference (
+ folder_tree_model, store, folder_name);
}
if (gtk_tree_row_reference_valid (reference)) {