* src/widgets/modest-header-view-render.c:
authorJose Dapena Paz <jdapena@igalia.com>
Mon, 17 Sep 2007 14:12:53 +0000 (14:12 +0000)
committerJose Dapena Paz <jdapena@igalia.com>
Mon, 17 Sep 2007 14:12:53 +0000 (14:12 +0000)
        * Now we escape the subjects to be added to the header subject
          cell, to prevent some warnings.
* src/modest-ui-actions.c:
        * (modest_ui_actions_on_delete_message): now we check if
          selection is empty to unselect it. We got the selection in
          main window case, but in message window selection is
          always NULL. We prevent a warning this way.
        * (new_messages_arrived): if new_headers is NULL, we don't show
          a warning.
* src/maemo/modest-msg-view-window.c:
        * (modest_msg_view_window_get_header): if the row reference is
          not valid, we return NULL without warnings.
        * (message_reader): now it uses a row reference instead of a
          path. This way the reference is valid even after deleting
          messages. This way deletion does not break the row references.
          And this way after deleting a message in viewer, the next
          message shown and the one you would delete are the same
          (fixes NB#63937). We use now row reference for all things
          related to retrieval of messages.
* src/modest-mail-operation.c:
        * Minor change.
* src/modest-ui-dimming-rules.c:
        * (_define_msg_view_window_dimming_state): if the header of the
          message view is NULL, we don't show a warning (happens on
          loading a new message to view).

pmo-trunk-r3316

src/maemo/modest-msg-view-window.c
src/modest-mail-operation.c
src/modest-ui-actions.c
src/modest-ui-dimming-rules.c
src/widgets/modest-header-view-render.c

index 6b76712..b375868 100644 (file)
@@ -1167,6 +1167,8 @@ modest_msg_view_window_get_header (ModestMsgViewWindow *self)
         * instead of sometimes retrieving it from the header view?
         * Then we wouldn't be dependent on the message actually still being selected 
         * in the header view. murrayc. */
+       if (!gtk_tree_row_reference_valid (priv->row_reference))
+               return NULL;
        path = gtk_tree_row_reference_get_path (priv->row_reference);
        g_return_val_if_fail (path != NULL, NULL);
        gtk_tree_model_get_iter (priv->header_model, 
@@ -1546,7 +1548,7 @@ static gboolean
 message_reader (ModestMsgViewWindow *window,
                ModestMsgViewWindowPrivate *priv,
                TnyHeader *header,
-               GtkTreePath *path)
+               GtkTreeRowReference *row_reference)
 {
        ModestMailOperation *mail_op = NULL;
        ModestMailOperationTypeOperation op_type;
@@ -1554,7 +1556,7 @@ message_reader (ModestMsgViewWindow *window,
        ModestWindow *msg_window = NULL;
        ModestWindowMgr *mgr;
 
-       g_return_val_if_fail (path != NULL, FALSE);
+       g_return_val_if_fail (row_reference != NULL, FALSE);
 
        mgr = modest_runtime_get_window_mgr ();
        already_showing = modest_window_mgr_find_registered_header (mgr, header, &msg_window);
@@ -1603,7 +1605,7 @@ message_reader (ModestMsgViewWindow *window,
                                                                 NULL);
                                
        modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op);
-       modest_mail_operation_get_msg (mail_op, header, view_msg_cb, path);
+       modest_mail_operation_get_msg (mail_op, header, view_msg_cb, row_reference);
        g_object_unref (mail_op);
 
        /* Update toolbar dimming rules */
@@ -1620,6 +1622,7 @@ modest_msg_view_window_select_next_message (ModestMsgViewWindow *window)
        GtkTreeIter tmp_iter;
        TnyHeader *header;
        gboolean retval = TRUE;
+       GtkTreeRowReference *row_reference = NULL;
 
        g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (window), FALSE);
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
@@ -1641,18 +1644,21 @@ modest_msg_view_window_select_next_message (ModestMsgViewWindow *window)
        if (path == NULL)
                return FALSE;
 
+       row_reference = gtk_tree_row_reference_copy (priv->next_row_reference);
+
        gtk_tree_model_get_iter (priv->header_model,
                                 &tmp_iter,
                                 path);
+       gtk_tree_path_free (path);
 
        gtk_tree_model_get (priv->header_model, &tmp_iter, 
                            TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN,
                            &header, -1);
        
        /* Read the message & show it */
-       if (!message_reader (window, priv, header, path)) {
+       if (!message_reader (window, priv, header, row_reference)) {
                retval = FALSE;
-               gtk_tree_path_free (path);
+               gtk_tree_row_reference_free (row_reference);
        }
 
        /* Free */
@@ -1667,7 +1673,8 @@ modest_msg_view_window_select_first_message (ModestMsgViewWindow *self)
        ModestMsgViewWindowPrivate *priv = NULL;
        TnyHeader *header = NULL;
        GtkTreeIter iter;
-       GtkTreePath *path;
+       GtkTreePath *path = NULL;
+       GtkTreeRowReference *row_reference = NULL;
 
        g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (self), FALSE);
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self);
@@ -1688,9 +1695,11 @@ modest_msg_view_window_select_first_message (ModestMsgViewWindow *self)
        }
        
        path = gtk_tree_model_get_path (priv->header_model, &iter);
-       
+       row_reference = gtk_tree_row_reference_new (priv->header_model, path);
+       gtk_tree_path_free (path);
+
        /* Read the message & show it */
-       message_reader (self, priv, header, path);
+       message_reader (self, priv, header, row_reference);
        
        /* Free */
        g_object_unref (header);
@@ -1703,6 +1712,7 @@ modest_msg_view_window_select_previous_message (ModestMsgViewWindow *window)
 {
        ModestMsgViewWindowPrivate *priv = NULL;
        GtkTreePath *path;
+       GtkTreeRowReference *row_reference = NULL;
 
        g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (window), FALSE);
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
@@ -1727,12 +1737,15 @@ modest_msg_view_window_select_previous_message (ModestMsgViewWindow *window)
                        continue;
                }
 
+               row_reference = gtk_tree_row_reference_new (priv->header_model, path);
                /* Read the message & show it */
-               if (!message_reader (window, priv, header, path)) {
+               if (!message_reader (window, priv, header, row_reference)) {
+                       gtk_tree_row_reference_free (row_reference);
                        g_object_unref (header);
                        break;
                }
 
+               gtk_tree_path_free (path);
                g_object_unref (header);
 
                return TRUE;
@@ -1750,12 +1763,12 @@ view_msg_cb (ModestMailOperation *mail_op,
 {
        ModestMsgViewWindow *self = NULL;
        ModestMsgViewWindowPrivate *priv = NULL;
-       GtkTreePath *path;
+       GtkTreeRowReference *row_reference = NULL;
 
        /* If there was any error */
-       path = (GtkTreePath *) user_data;
+       row_reference = (GtkTreeRowReference *) user_data;
        if (!modest_ui_actions_msg_retrieval_check (mail_op, header, msg)) {
-               gtk_tree_path_free (path);                      
+               gtk_tree_row_reference_free (row_reference);                    
                return;
        }
 
@@ -1766,10 +1779,10 @@ view_msg_cb (ModestMailOperation *mail_op,
 
        /* Update the row reference */
        gtk_tree_row_reference_free (priv->row_reference);
-       priv->row_reference = gtk_tree_row_reference_new (priv->header_model, path);
+       priv->row_reference = gtk_tree_row_reference_copy (row_reference);
        priv->next_row_reference = gtk_tree_row_reference_copy (priv->row_reference);
        select_next_valid_row (priv->header_model, &(priv->next_row_reference), TRUE);
-       gtk_tree_path_free (path);
+       gtk_tree_row_reference_free (row_reference);
 
        /* Mark header as read */
        if (!(tny_header_get_flags (header) & TNY_HEADER_FLAG_SEEN))
index f39bb84..79d73c3 100644 (file)
@@ -1534,8 +1534,9 @@ modest_mail_operation_update_account (ModestMailOperation *self,
 
  error:
        priv->status = MODEST_MAIL_OPERATION_STATUS_FAILED;
-       if (callback) 
-               callback (self, 0, user_data);
+       if (callback) {
+               callback (self, NULL, user_data);
+       }
        modest_mail_operation_notify_end (self);
        return FALSE;
 }
index 8c55c56..2f0eb7e 100644 (file)
@@ -528,7 +528,9 @@ modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win)
                modest_do_messages_delete (header_list, win);
                
                /* Enable window dimming management */
-               gtk_tree_selection_unselect_all (sel);
+               if (sel != NULL) {
+                       gtk_tree_selection_unselect_all (sel);
+               }
                modest_window_enable_dimming (MODEST_WINDOW(win));
                
                if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
@@ -1550,7 +1552,7 @@ new_messages_arrived (ModestMailOperation *self,
        }       
 
        /* Notify new messages have been downloaded */
-       if (tny_list_get_length (new_headers) > 0) {
+       if ((new_headers != NULL) && (tny_list_get_length (new_headers) > 0)) {
                TnyIterator *iter = tny_list_create_iterator (new_headers);
                do {
                        TnyHeader *header =  NULL;
index c5ce23d..44dfc6f 100644 (file)
@@ -243,6 +243,8 @@ _define_msg_view_window_dimming_state (ModestMsgViewWindow *window)
        state->sent_in_progress = FALSE;
 
        header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW(window));
+       if (header == NULL)
+               return state;
        g_return_val_if_fail (TNY_IS_HEADER(header), state);
        flags = tny_header_get_flags (header);
 
index 8b00a86..0dd04c9 100644 (file)
@@ -356,9 +356,17 @@ _modest_header_view_compact_header_cell_data  (GtkTreeViewColumn *column,  GtkCe
                              NULL, NULL);
 
 
-       g_object_set (G_OBJECT (subject_cell), "markup",
-                     (subject && strlen (subject)) ? subject : _("mail_va_no_subject"),
-                     NULL);
+       if (subject && strlen (subject)) {
+               gchar * escaped_subject = NULL;
+
+               escaped_subject = g_markup_escape_text (subject, -1);
+               g_object_set (G_OBJECT (subject_cell), "markup",
+                             escaped_subject, NULL);
+       } else {
+               g_object_set (G_OBJECT (subject_cell), "markup",
+                             _("mail_va_no_subject"), NULL);
+       }
+
        g_free (subject);
        set_common_flags (subject_cell, flags);