[evolution] I#1965 - Mail: Special folder icon not udpated after change
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] I#1965 - Mail: Special folder icon not udpated after change
- Date: Fri, 7 Oct 2022 10:37:04 +0000 (UTC)
commit 2688d2e26f67569b5d4a4436837fb59622f5dd82
Author: Milan Crha <mcrha redhat com>
Date: Fri Oct 7 12:36:28 2022 +0200
I#1965 - Mail: Special folder icon not udpated after change
Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/1965
src/mail/em-folder-tree-model.c | 42 +++++++++++++++++++++++++++++++++
src/mail/em-folder-tree-model.h | 3 +++
src/modules/mail/e-mail-shell-backend.c | 8 +++++++
3 files changed, 53 insertions(+)
---
diff --git a/src/mail/em-folder-tree-model.c b/src/mail/em-folder-tree-model.c
index 81947a7ba9..7b36ab9edc 100644
--- a/src/mail/em-folder-tree-model.c
+++ b/src/mail/em-folder-tree-model.c
@@ -2326,3 +2326,45 @@ em_folder_tree_model_update_row_tweaks (EMFolderTreeModel *model,
g_free (icon_filename);
g_free (folder_uri);
}
+
+void
+em_folder_tree_model_update_folder_icons_for_store (EMFolderTreeModel *model,
+ CamelStore *store)
+{
+ GtkTreeModel *tree_model;
+ GHashTableIter iter;
+ gpointer value;
+ StoreInfo *si;
+
+ g_return_if_fail (EM_IS_FOLDER_TREE_MODEL (model));
+ g_return_if_fail (CAMEL_IS_STORE (store));
+
+ si = folder_tree_model_store_index_lookup (model, store);
+ if (!si)
+ return;
+
+ tree_model = GTK_TREE_MODEL (model);
+
+ g_hash_table_iter_init (&iter, si->full_hash);
+
+ while (g_hash_table_iter_next (&iter, NULL, &value)) {
+ GtkTreeRowReference *row = value;
+
+ if (gtk_tree_row_reference_valid (row)) {
+ gchar *folder_uri = NULL;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+
+ path = gtk_tree_row_reference_get_path (row);
+ gtk_tree_model_get_iter (tree_model, &iter, path);
+ gtk_tree_path_free (path);
+
+ gtk_tree_model_get (tree_model, &iter, COL_STRING_FOLDER_URI, &folder_uri, -1);
+ if (folder_uri)
+ em_folder_tree_model_update_folder_icon (model, folder_uri);
+ g_free (folder_uri);
+ }
+ }
+
+ store_info_unref (si);
+}
diff --git a/src/mail/em-folder-tree-model.h b/src/mail/em-folder-tree-model.h
index aec76ca04f..a0f50956a6 100644
--- a/src/mail/em-folder-tree-model.h
+++ b/src/mail/em-folder-tree-model.h
@@ -180,6 +180,9 @@ void em_folder_tree_model_user_marked_unread
void em_folder_tree_model_update_row_tweaks
(EMFolderTreeModel *model,
GtkTreeIter *iter);
+void em_folder_tree_model_update_folder_icons_for_store
+ (EMFolderTreeModel *model,
+ CamelStore *store);
G_END_DECLS
diff --git a/src/modules/mail/e-mail-shell-backend.c b/src/modules/mail/e-mail-shell-backend.c
index 40cfec4d03..121e271be7 100644
--- a/src/modules/mail/e-mail-shell-backend.c
+++ b/src/modules/mail/e-mail-shell-backend.c
@@ -870,6 +870,14 @@ mail_shell_backend_changes_committed_cb (EMailConfigWindow *window,
service = camel_session_ref_service (CAMEL_SESSION (session), uid);
g_return_if_fail (service != NULL);
+ if (CAMEL_IS_STORE (service)) {
+ EMFolderTreeModel *model;
+
+ model = em_folder_tree_model_get_default ();
+ if (model)
+ em_folder_tree_model_update_folder_icons_for_store (model, CAMEL_STORE (service));
+ }
+
shell_backend = E_SHELL_BACKEND (mail_shell_backend);
shell = e_shell_backend_get_shell (shell_backend);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]