* src/widgets/modest-folder-view.c:
authorJose Dapena Paz <jdapena@igalia.com>
Wed, 11 Jul 2007 14:23:05 +0000 (14:23 +0000)
committerJose Dapena Paz <jdapena@igalia.com>
Wed, 11 Jul 2007 14:23:05 +0000 (14:23 +0000)
        * Removed a posible leak of a reference to folders if
          folders retrieval failed.
* src/widgets/modest-header-view.c:
        * Put null to some headers initial values to prevent using it
          without values.
* src/modest-tny-msg.c:
        * Add a reference owned by the attachments list
* src/maemo/modest-msg-view-window.c:
        * We don't run the clipboard owner change handler if the
          window is not visible.

pmo-trunk-r2700

src/maemo/modest-msg-view-window.c
src/modest-tny-msg.c
src/widgets/modest-folder-view.c
src/widgets/modest-header-view.c

index 87ea173..7e39bf7 100644 (file)
@@ -1510,6 +1510,9 @@ modest_msg_view_window_clipboard_owner_change (GtkClipboard *clipboard,
        gchar *selection;
        GtkWidget *focused;
 
+       if (!GTK_WIDGET_VISIBLE (window))
+               return;
+
        parent_priv = MODEST_WINDOW_GET_PRIVATE (window);
        selection = gtk_clipboard_wait_for_text (clipboard);
 
index 0164e21..0a23c7d 100644 (file)
@@ -460,8 +460,10 @@ add_if_attachment (gpointer data, gpointer user_data)
        part = TNY_MIME_PART (data);
        attachments_list = ((GList **) user_data);
 
-       if ((tny_mime_part_is_attachment (part))||(TNY_IS_MSG (part)))
+       if ((tny_mime_part_is_attachment (part))||(TNY_IS_MSG (part))) {
                *attachments_list = g_list_prepend (*attachments_list, part);
+               g_object_ref (part);
+       }
 }
 
 TnyMsg* 
index 00f1f65..46e5d4d 100644 (file)
@@ -1225,7 +1225,7 @@ static gint
 cmp_rows (GtkTreeModel *tree_model, GtkTreeIter *iter1, GtkTreeIter *iter2,
          gpointer user_data)
 {
-       gint cmp;
+       gint cmp = 0;
        gchar *name1 = NULL;
        gchar *name2 = NULL;
        TnyFolderType type = TNY_FOLDER_TYPE_UNKNOWN;
@@ -1249,7 +1249,7 @@ cmp_rows (GtkTreeModel *tree_model, GtkTreeIter *iter1, GtkTreeIter *iter2,
           folder copy/move actually occurs, so there could be
           situations where the model to be drawn is not correct */
        if (!folder1 || !folder2)
-               return 0;
+               goto finish;
 
        if (type == TNY_FOLDER_TYPE_ROOT) {
                /* Compare the types, so that 
@@ -1276,16 +1276,17 @@ cmp_rows (GtkTreeModel *tree_model, GtkTreeIter *iter1, GtkTreeIter *iter2,
                        const gchar *account_id = account1 ? tny_account_get_id (account1) : NULL;
                        const gchar *account_id2 = account2 ? tny_account_get_id (account2) : NULL;
        
-                       if (!account_id && !account_id2)
-                               return 0;
-                       else if (!account_id)
-                               return -1;
-                       else if (!account_id2)
-                               return +1;
-                       else if (!strcmp (account_id, MODEST_MMC_ACCOUNT_ID))
+                       if (!account_id && !account_id2) {
+                               cmp = 0;
+                       } else if (!account_id) {
+                               cmp = -1;
+                       } else if (!account_id2) {
                                cmp = +1;
-                       else
+                       } else if (!strcmp (account_id, MODEST_MMC_ACCOUNT_ID)) {
+                               cmp = +1;
+                       } else {
                                cmp = modest_text_utils_utf8_strcmp (name1, name2, TRUE);
+                       }
                }
        } else {
                gint cmp1 = 0, cmp2 = 0;
@@ -1321,7 +1322,8 @@ cmp_rows (GtkTreeModel *tree_model, GtkTreeIter *iter1, GtkTreeIter *iter2,
                else 
                        cmp = (cmp1 - cmp2);
        }
-       
+
+finish:        
        if (folder1)
                g_object_unref(G_OBJECT(folder1));
        if (folder2)
@@ -1455,7 +1457,10 @@ drag_and_drop_from_header_view (GtkTreeModel *source_model,
        }
 
        /* Transfer message */
-       mail_op = modest_mail_operation_new (MODEST_MAIL_OPERATION_TYPE_RECEIVE, NULL);
+       mail_op = modest_mail_operation_new_with_error_handling (MODEST_MAIL_OPERATION_TYPE_RECEIVE, 
+                                                                NULL,
+                                                                modest_ui_actions_move_folder_error_handler,
+                                                                NULL);
        modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
                                         mail_op);
        g_signal_connect (G_OBJECT (mail_op), "progress-changed",
index e5ac449..fe42dbc 100644 (file)
@@ -1148,7 +1148,7 @@ static void
 on_selection_changed (GtkTreeSelection *sel, gpointer user_data)
 {
        GtkTreeModel *model;
-       TnyHeader *header;
+       TnyHeader *header = NULL;
        GtkTreePath *path = NULL;       
        GtkTreeIter iter;
        ModestHeaderView *self;
@@ -1297,7 +1297,7 @@ drag_data_get_cb (GtkWidget *widget, GdkDragContext *context,
                gtk_tree_set_row_drag_data (selection_data, model, source_row);
                break;
        case MODEST_MSG: {
-               TnyHeader *hdr;
+               TnyHeader *hdr = NULL;
                gtk_tree_model_get (model, &iter,
                                    TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &hdr,
                                    -1);