* Fixes NB#85378, show the connection specific SMTP and not the account settings...
[modest] / src / modest-ui-actions.c
index 9e8cd82..f69a922 100644 (file)
@@ -655,18 +655,6 @@ modest_ui_actions_on_accounts (GtkAction *action,
        }
 }
 
-#ifdef MODEST_PLATFORM_MAEMO
-static void
-on_smtp_servers_window_hide (GtkWindow* window, gpointer user_data)
-{
-       /* Save any changes. */
-       modest_connection_specific_smtp_window_save_server_accounts (
-                       MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (window));
-       gtk_widget_destroy (GTK_WIDGET (window));
-}
-#endif
-
-
 void
 modest_ui_actions_on_smtp_servers (GtkAction *action, ModestWindow *win)
 {
@@ -682,14 +670,10 @@ modest_ui_actions_on_smtp_servers (GtkAction *action, ModestWindow *win)
                MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (specific_window), 
                modest_runtime_get_account_mgr());
 
-       /* Show the window: */  
-       gtk_window_set_transient_for (GTK_WINDOW (specific_window), GTK_WINDOW (win));
-       gtk_window_set_modal (GTK_WINDOW (specific_window), TRUE);
+       /* Show the window: */
+       modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), 
+                                    GTK_WINDOW (specific_window));
        gtk_widget_show (specific_window);
-    
-       /* 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 */
 }
 
@@ -848,7 +832,8 @@ open_msg_banner_idle (gpointer userdata)
        gdk_threads_enter ();
        banner_info->idle_handler = 0;
        banner_info->banner = modest_platform_animation_banner (NULL, NULL, banner_info->message);
-       g_object_ref (banner_info->banner);
+       if (banner_info)
+               g_object_ref (banner_info->banner);
        
        gdk_threads_leave ();
 
@@ -944,17 +929,28 @@ open_msg_cb (ModestMailOperation *mail_op,
                if (from_header) {
                        GSList *accounts = modest_account_mgr_account_names (mgr, TRUE);
                        GSList *node = NULL;
+                       gchar *from_header_email;
+
+                       from_header_email = modest_text_utils_get_email_address ((const gchar *) from_header);
+
                        for (node = accounts; node != NULL; node = g_slist_next (node)) {
-                               gchar *from = modest_account_mgr_get_from_string (mgr, node->data);
+                               gchar *from, *from_email;
                                
-                               if (from && (strcmp (from_header, from) == 0)) {
-                                       g_free (account);
-                                       account = g_strdup (node->data);
+                               from = modest_account_mgr_get_from_string (mgr, node->data);
+                               if (from) {
+                                       from_email = modest_text_utils_get_email_address ((const gchar *) from);
+                                       if (strcmp (from_header_email, from_email) == 0) {
+                                               g_free (account);
+                                               account = g_strdup (node->data);
+                                               g_free (from_email);
+                                               g_free (from);
+                                               break;
+                                       }
+                                       g_free (from_email);
                                        g_free (from);
-                                       break;
                                }
-                               g_free (from);
                        }
+                       g_free (from_header_email);
                        g_free (from_header);
                        g_slist_foreach (accounts, (GFunc) g_free, NULL);
                        g_slist_free (accounts);
@@ -1702,6 +1698,7 @@ reply_forward (ReplyForwardAction action, ModestWindow *win)
                                
                                modest_mail_operation_get_msg (mail_op,
                                                               header,
+                                                              TRUE,
                                                               reply_forward_cb,
                                                               rf_helper);
                                /* Clean */
@@ -3135,6 +3132,7 @@ on_rename_folder_cb (ModestMailOperation *mail_op,
        } else {
                modest_folder_view_select_first_inbox_or_local (folder_view);
        }
+       gtk_widget_grab_focus (GTK_WIDGET (folder_view));       
 }
 
 static void
@@ -3776,8 +3774,10 @@ paste_as_attachment_free (gpointer data)
 {
        PasteAsAttachmentHelper *helper = (PasteAsAttachmentHelper *) data;
 
-       gtk_widget_destroy (helper->banner);
-       g_object_unref (helper->banner);
+       if (helper->banner) {
+               gtk_widget_destroy (helper->banner);
+               g_object_unref (helper->banner);
+       }
        g_free (helper);
 }
 
@@ -3831,7 +3831,6 @@ modest_ui_actions_on_paste (GtkAction *action,
                        mail_op = modest_mail_operation_new (G_OBJECT (window));
                        if (helper->banner != NULL) {
                                g_object_ref (G_OBJECT (helper->banner));
-                               gtk_window_set_modal (GTK_WINDOW (helper->banner), FALSE);
                                gtk_widget_show (GTK_WIDGET (helper->banner));
                        }
 
@@ -4667,8 +4666,10 @@ move_to_cb (ModestMailOperation *mail_op,
         }
 
        /* Close the "Pasting" information banner */
-       gtk_widget_destroy (GTK_WIDGET(helper->banner));
-       g_object_unref (helper->banner);
+       if (helper->banner) {
+               gtk_widget_destroy (GTK_WIDGET(helper->banner));
+               g_object_unref (helper->banner);
+       }
        if (helper->reference != NULL)
                gtk_tree_row_reference_free (helper->reference);
        g_free (helper);
@@ -4863,7 +4864,7 @@ modest_ui_actions_on_main_window_remove_attachments (GtkAction *action,
                                                                         modest_ui_actions_disk_operations_error_handler,
                                                                         NULL, NULL);
                modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op);
-               modest_mail_operation_get_msg (mail_op, header, open_msg_for_purge_cb, win);
+               modest_mail_operation_get_msg (mail_op, header, FALSE, open_msg_for_purge_cb, win);
                
                g_object_unref (mail_op);
        }
@@ -5037,7 +5038,6 @@ xfer_messages_performer  (gboolean canceled,
                                                           _CS("ckct_nw_pasting"));
        if (helper->banner != NULL)  {
                g_object_ref (helper->banner);
-               gtk_window_set_modal (GTK_WINDOW(helper->banner), FALSE);
                gtk_widget_show (GTK_WIDGET(helper->banner));
        }
 
@@ -5095,7 +5095,6 @@ on_move_folder_cb (gboolean canceled, GError *err, GtkWindow *parent_window,
                        _CS("ckct_nw_pasting"));
        if (helper->banner != NULL)  {
                g_object_ref (helper->banner);
-               gtk_window_set_modal (GTK_WINDOW(helper->banner), FALSE);
                gtk_widget_show (GTK_WIDGET(helper->banner));
        }
        /* Clean folder on header view before moving it */