Updated bug fixes info in changelog which are to be sent to product for week 03
[modest] / src / modest-ui-actions.c
index ec0abfe..c4bf52d 100644 (file)
@@ -177,10 +177,12 @@ static void modest_ui_actions_on_main_window_move_to (GtkAction *action,
                                                      GtkWidget *folder_view,
                                                      TnyFolderStore *dst_folder,
                                                      ModestMainWindow *win);
+#ifdef MODEST_TOOLKIT_HILDON2
 static void modest_ui_actions_on_folder_window_move_to (GtkWidget *folder_view,
                                                        TnyFolderStore *dst_folder,
                                                        TnyList *selection,
                                                        GtkWindow *win);
+#endif
 
 static void modest_ui_actions_on_window_move_to (GtkAction *action,
                                                 TnyList *list_to_move,
@@ -3124,11 +3126,10 @@ modest_ui_actions_on_select_editor_background_color (GtkAction *action,
 }
 
 void 
-modest_ui_actions_on_insert_image (GtkAction *action,
+modest_ui_actions_on_insert_image (GObject *object,
                                   ModestMsgEditWindow *window)
 {
        g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
-       g_return_if_fail (GTK_IS_ACTION (action));
 
 
        if (modest_platform_check_memory_low (MODEST_WINDOW(window), TRUE))
@@ -3158,7 +3159,6 @@ modest_ui_actions_on_remove_attachments (GtkAction *action,
                                         ModestMsgEditWindow *window)
 {
        g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
-       g_return_if_fail (GTK_IS_ACTION (action));
 
        modest_msg_edit_window_remove_attachments (window, NULL);
 }
@@ -3262,20 +3262,22 @@ do_create_folder_cb (ModestMailOperation *mail_op,
 
 static void
 do_create_folder (GtkWindow *parent_window, 
-                 TnyFolderStore *parent_folder, 
+                 TnyFolderStore *suggested_parent, 
                  const gchar *suggested_name)
 {
        gint result;
        gchar *folder_name = NULL;
+       TnyFolderStore *parent_folder = NULL;
 
        result = modest_platform_run_new_folder_dialog (GTK_WINDOW (parent_window),
-                                                       parent_folder,
+                                                       suggested_parent,
                                                        (gchar *) suggested_name,
-                                                       &folder_name);
-       
-       if (result == GTK_RESPONSE_ACCEPT) {
+                                                       &folder_name,
+                                                       &parent_folder);
+
+       if (result == GTK_RESPONSE_ACCEPT && parent_folder) {
                ModestMailOperation *mail_op;
-               
+
                mail_op  = modest_mail_operation_new ((GObject *) parent_window);
                modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), 
                                                 mail_op);
@@ -3286,6 +3288,9 @@ do_create_folder (GtkWindow *parent_window,
                                                     folder_name);
                g_object_unref (mail_op);
        }
+
+       if (parent_folder)
+               g_object_unref (parent_folder);
 }
 
 static void
@@ -3316,22 +3321,41 @@ modest_ui_actions_create_folder(GtkWidget *parent_window,
 {
        TnyFolderStore *parent_folder;
 
+#ifdef MODEST_TOOLKIT_HILDON2
+       const gchar *active_account;
+       TnyAccount *account;
+       ModestTnyAccountStore *acc_store;
+
+       /* In hildon 2.2 we use the current account as default parent */
+       acc_store = modest_runtime_get_account_store ();
+       active_account = modest_window_get_active_account (MODEST_WINDOW (parent_window));
+       if (active_account) {
+               account = modest_tny_account_store_get_server_account (acc_store,
+                                                                      active_account,
+                                                                      TNY_ACCOUNT_TYPE_STORE);
+               parent_folder = TNY_FOLDER_STORE (account);
+       } else {
+               parent_folder = (TnyFolderStore *) 
+                       modest_tny_account_store_get_local_folders_account (acc_store);
+       }
+#else
        parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
-       
+#endif
+
        if (parent_folder) {
                /* The parent folder will be freed in the callback */
-               modest_platform_connect_if_remote_and_perform (GTK_WINDOW (parent_window), 
+               modest_platform_connect_if_remote_and_perform (GTK_WINDOW (parent_window),
                                                               TRUE,
                                                               parent_folder,
-                                                              create_folder_performer, 
+                                                              create_folder_performer,
                                                               parent_folder);
        }
 }
 
-void 
+void
 modest_ui_actions_on_new_folder (GtkAction *action, ModestWindow *window)
 {
-       
+
        g_return_if_fail (MODEST_IS_WINDOW(window));
 
        if (MODEST_IS_MAIN_WINDOW (window)) {
@@ -3396,8 +3420,8 @@ on_rename_folder_cb (ModestMailOperation *mail_op,
 {
        ModestFolderView *folder_view;
 
-       /* If the window was closed when renaming a folder this could
-          happen */
+       /* If the window was closed when renaming a folder, or if
+        * it's not a main window this will happen */
        if (!MODEST_IS_FOLDER_VIEW (user_data))
                return;
 
@@ -3426,11 +3450,7 @@ on_rename_folder_performer (gboolean canceled,
        if (canceled || err) {
                /* In memory full conditions we could get this error here */
                check_memory_full_error ((GtkWidget *) parent_window, err);
-       } else if (MODEST_IS_MAIN_WINDOW(parent_window)) {
-
-               folder_view = modest_main_window_get_child_widget (
-                               MODEST_MAIN_WINDOW (parent_window),
-                               MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
+       } else {
 
                mail_op = 
                        modest_mail_operation_new_with_error_handling (G_OBJECT(parent_window),
@@ -3440,9 +3460,18 @@ on_rename_folder_performer (gboolean canceled,
                modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
                                mail_op);
 
-               /* Clear the headers view */
-               sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_view));
-               gtk_tree_selection_unselect_all (sel);
+               if (MODEST_IS_MAIN_WINDOW(parent_window)) {
+
+                       folder_view = modest_main_window_get_child_widget (
+                               MODEST_MAIN_WINDOW (parent_window),
+                               MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
+
+                       /* Clear the headers view */
+                       sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_view));
+                       gtk_tree_selection_unselect_all (sel);
+               } else {
+                       folder_view = NULL;
+               }
 
                /* Actually rename the folder */
                modest_mail_operation_rename_folder (mail_op,
@@ -3460,40 +3489,48 @@ on_rename_folder_performer (gboolean canceled,
 
 void 
 modest_ui_actions_on_rename_folder (GtkAction *action,
-                                    ModestMainWindow *main_window)
+                                    ModestWindow *window)
+{
+       modest_ui_actions_on_edit_mode_rename_folder (window);
+}
+
+gboolean 
+modest_ui_actions_on_edit_mode_rename_folder (ModestWindow *window)
 {
        TnyFolderStore *folder;
        GtkWidget *folder_view;
-       GtkWidget *header_view; 
+       gboolean do_rename = TRUE;
 
-       g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
+       g_return_val_if_fail (MODEST_IS_WINDOW(window), FALSE);
 
-       folder_view = modest_main_window_get_child_widget (main_window,
-                                                          MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
-       if (!folder_view)
-               return;
+       if (MODEST_IS_MAIN_WINDOW (window)) {
+               folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (window),
+                                                                  MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
+               if (!folder_view)
+                       return FALSE;
 
-       header_view = modest_main_window_get_child_widget (main_window,
-                                                          MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
-       
-       if (!header_view)
-               return;
+#ifdef MODEST_TOOLKIT_HILDON2
+       } else if (MODEST_IS_FOLDER_WINDOW (window)) {
+               folder_view = GTK_WIDGET (modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (window)));
+#endif
+       } else {
+               return FALSE;
+       }
 
        folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
 
        if (!folder)
-               return;
+               return FALSE;
 
        if (TNY_IS_FOLDER (folder)) {
                gchar *folder_name = NULL;
                gint response;
                const gchar *current_name;
                TnyFolderStore *parent;
-               gboolean do_rename = TRUE;
 
                current_name = tny_folder_get_name (TNY_FOLDER (folder));
                parent = tny_folder_get_folder_store (TNY_FOLDER (folder));
-               response = modest_platform_run_rename_folder_dialog (GTK_WINDOW (main_window), 
+               response = modest_platform_run_rename_folder_dialog (GTK_WINDOW (window),
                                                                     parent, current_name, 
                                                                     &folder_name);
                g_object_unref (parent);
@@ -3504,11 +3541,12 @@ modest_ui_actions_on_rename_folder (GtkAction *action,
                        RenameFolderInfo *rename_folder_data = g_new0 (RenameFolderInfo, 1);
                        rename_folder_data->folder = g_object_ref (folder);
                        rename_folder_data->new_name = folder_name;
-                       modest_platform_connect_if_remote_and_perform (GTK_WINDOW(main_window), TRUE,
+                       modest_platform_connect_if_remote_and_perform (GTK_WINDOW(window), TRUE,
                                        folder, on_rename_folder_performer, rename_folder_data);
                }
        }
        g_object_unref (folder);
+       return do_rename;
 }
 
 static void
@@ -3554,6 +3592,10 @@ on_delete_folder_cb (gboolean canceled,
        } else if (MODEST_IS_FOLDER_WINDOW (parent_window)) {
                folder_view = GTK_WIDGET (modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (parent_window)));
 #endif
+       } else {
+               g_object_unref (G_OBJECT (info->folder));
+               g_free (info);
+               return;
        }
 
        /* Unselect the folder before deleting it to free the headers */
@@ -3595,6 +3637,8 @@ delete_folder (ModestWindow *window, gboolean move_to_trash)
        } else if (MODEST_IS_FOLDER_WINDOW (window)) {
                folder_view = GTK_WIDGET (modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (window)));
 #endif
+       } else {
+               return FALSE;
        }
        if (!folder_view)
                return FALSE;
@@ -4764,7 +4808,7 @@ on_move_to_dialog_response (GtkDialog *dialog,
                TnyFolderStore *dst_folder;
 
        case MODEST_GTK_RESPONSE_NEW_FOLDER:
-               modest_ui_actions_create_folder (GTK_WIDGET (dialog), folder_view);
+               modest_ui_actions_create_folder (GTK_WIDGET (parent_win), folder_view);
                return;
        case GTK_RESPONSE_NONE:
        case GTK_RESPONSE_CANCEL:
@@ -4801,7 +4845,8 @@ on_move_to_dialog_response (GtkDialog *dialog,
        }
 
        /* Free the helper and exit */
-       g_object_unref (helper->list);
+       if (helper->list)
+               g_object_unref (helper->list);
        g_slice_free (MoveToInfo, helper);
        gtk_widget_destroy (GTK_WIDGET (dialog));
 }
@@ -6106,12 +6151,19 @@ modest_ui_actions_on_open_addressbook (GtkAction *action, ModestWindow *win)
 
 
 void
-modest_ui_actions_on_toggle_find_in_page (GtkToggleAction *action,
+modest_ui_actions_on_toggle_find_in_page (GtkAction *action,
                                          ModestWindow *window)
 {
+       gboolean active;
        g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
 
-       modest_msg_edit_window_toggle_find_toolbar (MODEST_MSG_EDIT_WINDOW (window), gtk_toggle_action_get_active (action));
+       if (GTK_IS_TOGGLE_ACTION (action))
+               active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
+       else
+               active = TRUE;
+
+       modest_msg_edit_window_toggle_find_toolbar (MODEST_MSG_EDIT_WINDOW (window), 
+                                                   active);
 }
 
 static void