2007-06-20 Murray Cumming <murrayc@murrayc-desktop>
[modest] / src / modest-ui-actions.c
index a8294d6..663915b 100644 (file)
@@ -474,9 +474,9 @@ modest_ui_actions_on_smtp_servers (GtkAction *action, ModestWindow *win)
        /* Show the window: */  
        gtk_window_set_transient_for (GTK_WINDOW (specific_window), GTK_WINDOW (win));
        gtk_window_set_modal (GTK_WINDOW (specific_window), TRUE);
-    gtk_widget_show (specific_window);
+       gtk_widget_show (specific_window);
     
-    /* Save changes when the window is hidden: */
+       /* Save changes when the window is hidden: */
        g_signal_connect (specific_window, "hide", 
                G_CALLBACK (on_smtp_servers_window_hide), win);
 #endif /* MODEST_PLATFORM_MAEMO */
@@ -658,6 +658,7 @@ open_msg_cb (ModestMailOperation *mail_op,
 cleanup:
        /* Free */
        g_free(account);
+       g_object_unref (parent_win);
        g_object_unref (msg);
        g_object_unref (folder);
        g_object_unref (header);
@@ -679,6 +680,7 @@ modest_ui_actions_get_msgs_full_error_handler (ModestMailOperation *mail_op,
 
                modest_platform_run_information_dialog ((win) ? GTK_WINDOW (win) : NULL,
                                                        error->message);
+               g_object_unref (win);
        }
 }
 
@@ -724,11 +726,20 @@ _modest_ui_actions_open (TnyList *headers, ModestWindow *win)
                                                                 modest_ui_actions_get_msgs_full_error_handler, 
                                                                 NULL);
        modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op);
-       modest_mail_operation_get_msgs_full (mail_op, 
-                                            not_opened_headers, 
-                                            open_msg_cb, 
-                                            NULL, 
-                                            NULL);
+       if (tny_list_get_length (not_opened_headers) > 1) {
+               modest_mail_operation_get_msgs_full (mail_op, 
+                                                    not_opened_headers, 
+                                                    open_msg_cb, 
+                                                    NULL, 
+                                                    NULL);
+       } else {
+               TnyIterator *iter = tny_list_create_iterator (not_opened_headers);
+               TnyHeader *header = TNY_HEADER (tny_iterator_get_current (iter));
+               modest_mail_operation_get_msg (mail_op, header, open_msg_cb, NULL);
+               g_object_unref (header);
+               g_object_unref (iter);
+       }
+
        /* Clean */
        g_object_unref (not_opened_headers);
        g_object_unref (iter);
@@ -1312,11 +1323,12 @@ modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view,
        } else {
                if (TNY_IS_FOLDER (folder_store) && selected) {
                        
-                       if (!TNY_IS_MERGE_FOLDER (folder_store)) { /* TnyMergeFolder can have no get_account() implementation. */
-                               /* Update the active account */
-                               TnyAccount *account = modest_tny_folder_get_account (TNY_FOLDER (folder_store));
+                       /* Update the active account */
+                       TnyAccount *account = modest_tny_folder_get_account (TNY_FOLDER (folder_store));
+                       if (account) {
                                set_active_account_from_tny_account (account, MODEST_WINDOW (main_window));
                                g_object_unref (account);
+                               account = NULL;
                        }
 
                        /* Set the header style by default, it could
@@ -1902,6 +1914,7 @@ modest_ui_actions_delete_folder_error_handler (ModestMailOperation *mail_op,
 
        modest_platform_run_information_dialog ((win) ? GTK_WINDOW (win) : NULL,
                                                _("mail_in_ui_folder_delete_error"));
+       g_object_unref (win);
 }
 
 static void
@@ -2333,6 +2346,10 @@ modest_ui_actions_on_select_all (GtkAction *action,
                /* Select all messages */
                selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(header_view));
                gtk_tree_selection_select_all (selection);
+
+               /* Set focuse on header view */
+               gtk_widget_grab_focus (header_view);
+
        } else if (GTK_IS_HTML (focused_widget)) {
                gtk_html_select_all (GTK_HTML (focused_widget));
        }
@@ -2788,6 +2805,7 @@ modest_ui_actions_move_folder_error_handler (ModestMailOperation *mail_op,
        /* TODO: show error message */
        modest_platform_run_information_dialog ((win) ? GTK_WINDOW (win) : NULL,
                                                _("mail_in_ui_folder_move_target_error"));
+       g_object_unref (win);
 }
 
 /*