* src/widgets/modest-msg-view.c:
authorJose Dapena Paz <jdapena@igalia.com>
Wed, 1 Aug 2007 09:16:47 +0000 (09:16 +0000)
committerJose Dapena Paz <jdapena@igalia.com>
Wed, 1 Aug 2007 09:16:47 +0000 (09:16 +0000)
        * Modified the html adjustment change handler to prevent some
          infinite recursions. In particular one happening on removing
          attachments.
* src/widgets/modest-attachment-view.c:
        * Add support for showing purged attached messages.
* src/modest-ui-dimming-rules.c:
        * Now we don't dim remove attachments for message attachments in
          view, as we now support this (fixes NB#64068).

pmo-trunk-r2884

src/modest-ui-dimming-rules.c
src/widgets/modest-attachment-view.c
src/widgets/modest-msg-view.c

index 4dcd268..bf6c2b9 100644 (file)
@@ -44,7 +44,9 @@
 
 static gboolean _folder_is_any_of_type (TnyFolder *folder, TnyFolderType types[], guint ntypes);
 static gboolean _invalid_msg_selected (ModestMainWindow *win, gboolean unique, ModestDimmingRule *rule);
 
 static gboolean _folder_is_any_of_type (TnyFolder *folder, TnyFolderType types[], guint ntypes);
 static gboolean _invalid_msg_selected (ModestMainWindow *win, gboolean unique, ModestDimmingRule *rule);
-static gboolean _invalid_attach_selected (ModestWindow *win, gboolean unique, gboolean for_view, ModestDimmingRule *rule);
+static gboolean _invalid_attach_selected (ModestWindow *win, 
+                                         gboolean unique, gboolean for_view, gboolean for_remove,
+                                         ModestDimmingRule *rule);
 static gboolean _purged_attach_selected (ModestWindow *win, gboolean all, ModestDimmingRule *rule);
 static gboolean _clipboard_is_empty (ModestWindow *win);
 static gboolean _invalid_clipboard_selected (ModestWindow *win, ModestDimmingRule *rule);
 static gboolean _purged_attach_selected (ModestWindow *win, gboolean all, ModestDimmingRule *rule);
 static gboolean _clipboard_is_empty (ModestWindow *win);
 static gboolean _invalid_clipboard_selected (ModestWindow *win, ModestDimmingRule *rule);
@@ -785,7 +787,7 @@ modest_ui_dimming_rules_on_view_attachments (ModestWindow *win, gpointer user_da
 
        /* Check dimmed rule */ 
        if (!dimmed) 
 
        /* Check dimmed rule */ 
        if (!dimmed) 
-               dimmed = _invalid_attach_selected (win, TRUE, TRUE, rule);                      
+               dimmed = _invalid_attach_selected (win, TRUE, TRUE, FALSE, rule);                       
 
        if (!dimmed) {
                dimmed = _purged_attach_selected (win, FALSE, NULL);
 
        if (!dimmed) {
                dimmed = _purged_attach_selected (win, FALSE, NULL);
@@ -809,7 +811,7 @@ modest_ui_dimming_rules_on_save_attachments (ModestWindow *win, gpointer user_da
 
        /* Check dimmed rule */ 
        if (!dimmed) 
 
        /* Check dimmed rule */ 
        if (!dimmed) 
-               dimmed = _invalid_attach_selected (win, FALSE, FALSE, rule);
+               dimmed = _invalid_attach_selected (win, FALSE, FALSE, FALSE, rule);
 
        if (!dimmed) {
                dimmed = _purged_attach_selected (win, FALSE, NULL);
 
        if (!dimmed) {
                dimmed = _purged_attach_selected (win, FALSE, NULL);
@@ -838,7 +840,7 @@ modest_ui_dimming_rules_on_remove_attachments (ModestWindow *win, gpointer user_
 
        /* Check in view window if there's any attachment selected */
        if (!dimmed && MODEST_IS_MSG_VIEW_WINDOW (win)) {
 
        /* Check in view window if there's any attachment selected */
        if (!dimmed && MODEST_IS_MSG_VIEW_WINDOW (win)) {
-               dimmed = _invalid_attach_selected (win, FALSE, FALSE, NULL);
+               dimmed = _invalid_attach_selected (win, FALSE, FALSE, TRUE, NULL);
                if (dimmed)
                        modest_dimming_rule_set_notification (rule, _("FIXME:no attachment selected"));
        }
                if (dimmed)
                        modest_dimming_rule_set_notification (rule, _("FIXME:no attachment selected"));
        }
@@ -1485,6 +1487,7 @@ static gboolean
 _invalid_attach_selected (ModestWindow *win,
                          gboolean unique,
                          gboolean for_view,
 _invalid_attach_selected (ModestWindow *win,
                          gboolean unique,
                          gboolean for_view,
+                         gboolean for_remove,
                          ModestDimmingRule *rule) 
 {
        GList *attachments, *node;
                          ModestDimmingRule *rule) 
 {
        GList *attachments, *node;
@@ -1519,14 +1522,14 @@ _invalid_attach_selected (ModestWindow *win,
                        for (node = attachments; node != NULL && !result; node = g_list_next (node)) {
                                TnyMimePart *mime_part = TNY_MIME_PART (node->data);
                                TnyList *nested_list = tny_simple_list_new ();
                        for (node = attachments; node != NULL && !result; node = g_list_next (node)) {
                                TnyMimePart *mime_part = TNY_MIME_PART (node->data);
                                TnyList *nested_list = tny_simple_list_new ();
-                               if (TNY_IS_MSG (mime_part)) {
+                               if (!for_remove && TNY_IS_MSG (mime_part)) {
                                        selected_messages = TRUE;
                                        result = TRUE;
                                }
                                tny_mime_part_get_parts (mime_part, nested_list);
                                        selected_messages = TRUE;
                                        result = TRUE;
                                }
                                tny_mime_part_get_parts (mime_part, nested_list);
-                               if (tny_list_get_length (nested_list) > 0) {
-                               nested_attachments = TRUE;
-                               result = TRUE;
+                               if (!for_remove && tny_list_get_length (nested_list) > 0) {
+                                       nested_attachments = TRUE;
+                                       result = TRUE;
                                }
                                g_object_unref (nested_list);
                        }
                                }
                                g_object_unref (nested_list);
                        }
index e972f79..2fedbf3 100644 (file)
@@ -173,27 +173,30 @@ modest_attachment_view_set_part_default (TnyMimePartView *self, TnyMimePart *mim
 
        priv->size = 0;
        priv->is_purged = tny_mime_part_is_purged (mime_part);
 
        priv->size = 0;
        priv->is_purged = tny_mime_part_is_purged (mime_part);
-       
-       if (priv->is_purged) {
-               filename = g_strdup( tny_mime_part_get_filename (mime_part));
-               if (filename == NULL)
-                       filename = g_strdup ("");
-               file_icon_name = modest_platform_get_file_icon_name (NULL, NULL, NULL);
-       } else if (TNY_IS_MSG (mime_part)) {
+
+       if (TNY_IS_MSG (mime_part)) {
                TnyHeader *header = tny_msg_get_header (TNY_MSG (mime_part));
                if (TNY_IS_HEADER (header)) {
                        filename = g_strdup (tny_header_get_subject (header));
                        if (filename == NULL)
                                filename = g_strdup (_("mail_va_no_subject"));
                TnyHeader *header = tny_msg_get_header (TNY_MSG (mime_part));
                if (TNY_IS_HEADER (header)) {
                        filename = g_strdup (tny_header_get_subject (header));
                        if (filename == NULL)
                                filename = g_strdup (_("mail_va_no_subject"));
-                       file_icon_name = modest_platform_get_file_icon_name (NULL, tny_mime_part_get_content_type (mime_part), NULL);
+                       if (priv->is_purged)
+                               file_icon_name = modest_platform_get_file_icon_name (NULL, NULL, NULL);
+                       else
+                               file_icon_name = 
+                                       modest_platform_get_file_icon_name (
+                                               NULL, tny_mime_part_get_content_type (mime_part), NULL);
                        g_object_unref (header);
                }
        } else {
                filename = g_strdup (tny_mime_part_get_filename (mime_part));
                        g_object_unref (header);
                }
        } else {
                filename = g_strdup (tny_mime_part_get_filename (mime_part));
-               file_icon_name = modest_platform_get_file_icon_name (filename, 
-                                                                    tny_mime_part_get_content_type (mime_part), 
-                                                                    NULL);
-               show_size = TRUE;
+               if (priv->is_purged) {
+                       file_icon_name = modest_platform_get_file_icon_name (NULL, NULL, NULL);
+               } else {
+                       file_icon_name = modest_platform_get_file_icon_name (
+                               filename, tny_mime_part_get_content_type (mime_part), NULL);
+                       show_size = TRUE;
+               }
        }
 
        if (file_icon_name) {
        }
 
        if (file_icon_name) {
index 276f2f1..de775b1 100644 (file)
@@ -831,7 +831,11 @@ html_adjustment_changed (GtkAdjustment *adj,
        gboolean vadj_changed;
        gint new_height;
 
        gboolean vadj_changed;
        gint new_height;
 
+       g_signal_stop_emission_by_name (G_OBJECT (adj), "changed");
+
        priv->html_scroll->requisition.height = html_vadj->upper;
        priv->html_scroll->requisition.height = html_vadj->upper;
+       if (html_vadj->upper == priv->html_scroll->allocation.height)
+               return;
        priv->html_scroll->allocation.height = html_vadj->upper;
 
        set_vadjustment_values (msg_view, &vadj_changed);
        priv->html_scroll->allocation.height = html_vadj->upper;
 
        set_vadjustment_values (msg_view, &vadj_changed);