aboutsummaryrefslogtreecommitdiffstats
path: root/modules/prefer-plain
diff options
context:
space:
mode:
Diffstat (limited to 'modules/prefer-plain')
-rw-r--r--modules/prefer-plain/e-mail-display-popup-prefer-plain.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/modules/prefer-plain/e-mail-display-popup-prefer-plain.c b/modules/prefer-plain/e-mail-display-popup-prefer-plain.c
index 58969a6b19..2be2532eda 100644
--- a/modules/prefer-plain/e-mail-display-popup-prefer-plain.c
+++ b/modules/prefer-plain/e-mail-display-popup-prefer-plain.c
@@ -228,10 +228,11 @@ mail_display_popup_prefer_plain_update_actions (EMailDisplayPopupExtension *exte
SoupURI *soup_uri;
GHashTable *query;
EMailPartList *part_list;
- GSList *iter;
gboolean is_text_plain;
const gchar *action_name;
EMailDisplayPopupPreferPlain *pp_extension;
+ GQueue queue = G_QUEUE_INIT;
+ GList *head, *link;
display = E_MAIL_DISPLAY (e_extension_get_extensible (
E_EXTENSION (extension)));
@@ -307,10 +308,11 @@ mail_display_popup_prefer_plain_update_actions (EMailDisplayPopupExtension *exte
action_name = NULL;
part_list = e_mail_display_get_parts_list (display);
- for (iter = part_list->list; iter; iter = g_slist_next (iter)) {
- EMailPart *p = iter->data;
- if (!p)
- continue;
+ e_mail_part_list_queue_parts (part_list, NULL, &queue);
+ head = g_queue_peek_head_link (&queue);
+
+ for (link = head; link != NULL; link = g_list_next (link)) {
+ EMailPart *p = link->data;
if (g_str_has_prefix (p->id, prefix) &&
(strstr (p->id, "text_html") || strstr (p->id, "plain_text"))) {
@@ -335,6 +337,9 @@ mail_display_popup_prefer_plain_update_actions (EMailDisplayPopupExtension *exte
}
}
+ while (!g_queue_is_empty (&queue))
+ e_mail_part_unref (g_queue_pop_head (&queue));
+
if (action_name) {
action = gtk_action_group_get_action (
pp_extension->action_group, action_name);