* Commented out modest_folder_view_set_folder_selected because
authorJavier Fernandez Garcia-Boente <jfernandez@igalia.com>
Thu, 30 Aug 2007 12:23:06 +0000 (12:23 +0000)
committerJavier Fernandez Garcia-Boente <jfernandez@igalia.com>
Thu, 30 Aug 2007 12:23:06 +0000 (12:23 +0000)
it caused some hangs after folder transfer was completed.

pmo-trunk-r3154

src/modest-mail-operation.c
src/modest-ui-actions.c
src/widgets/modest-folder-view.c
src/widgets/modest-folder-view.h

index 437b75f..22f3c38 100644 (file)
@@ -305,6 +305,7 @@ modest_mail_operation_new_with_error_handling (ModestMailOperationTypeOperation
        
        g_return_val_if_fail (error_handler != NULL, obj);
        priv->error_checking = error_handler;
+       priv->error_checking_user_data = user_data;
 
        return obj;
 }
index 84e7964..0ed6b01 100644 (file)
@@ -103,6 +103,11 @@ typedef struct _ReplyForwardHelper {
        GtkWidget *parent_window;
 } ReplyForwardHelper;
 
+typedef struct _MoveToHelper {
+       ModestMailOperation *mail_op;
+       TnyFolder *folder;
+} MoveToHelper;
+
 typedef struct _PasteAsAttachmentHelper {
        ModestMsgEditWindow *window;
        GtkWidget *banner;
@@ -2974,6 +2979,7 @@ paste_msgs_cb (const GObject *object, gpointer user_data)
        gtk_widget_destroy (GTK_WIDGET(user_data));
 }
 
+
 static void
 paste_as_attachment_free (gpointer data)
 {
@@ -3824,6 +3830,8 @@ void
 modest_ui_actions_move_folder_error_handler (ModestMailOperation *mail_op, 
                                             gpointer user_data)
 {
+       ModestMainWindow *main_window = NULL;
+       GtkWidget *folder_view = NULL;
        GObject *win = modest_mail_operation_get_source (mail_op);
        const GError *error = NULL;
        const gchar *message = NULL;
@@ -3836,6 +3844,14 @@ modest_ui_actions_move_folder_error_handler (ModestMailOperation *mail_op,
                message = _("mail_in_ui_folder_move_target_error");
        }
        
+       /* Disable next automatic folder selection */
+       if (MODEST_IS_MAIN_WINDOW (user_data)) {
+               main_window = MODEST_MAIN_WINDOW(user_data);
+               folder_view = modest_main_window_get_child_widget (main_window,
+                                                          MODEST_WIDGET_TYPE_FOLDER_VIEW);     
+               modest_folder_view_disable_next_folder_selection (MODEST_FOLDER_VIEW(folder_view));             
+       }
+
        /* Show notification dialog */
        modest_platform_run_information_dialog ((win) ? GTK_WINDOW (win) : NULL, message);
        g_object_unref (win);
@@ -4134,14 +4150,15 @@ modest_ui_actions_on_main_window_move_to (GtkAction *action,
                           modest_mail_operation_new_with_error_handling (MODEST_MAIL_OPERATION_TYPE_RECEIVE,
                                                                          G_OBJECT(win),
                                                                          modest_ui_actions_move_folder_error_handler,
-                                                                         NULL);
+                                                                         win);
                         modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
                                                          mail_op);
 
                        /* Select *after* the changes */
-                       modest_folder_view_select_folder (MODEST_FOLDER_VIEW(folder_view),
-                                                         TNY_FOLDER (src_folder), TRUE);
-
+                       /* TODO: this function hangs UI after transfer */ 
+/*                     modest_folder_view_select_folder (MODEST_FOLDER_VIEW(folder_view), */
+/*                                                       TNY_FOLDER (src_folder), TRUE); */
+                       
                         modest_mail_operation_xfer_folder (mail_op,
                                                            TNY_FOLDER (src_folder),
                                                            dst_folder,
index 73772cb..547e1ba 100644 (file)
@@ -356,9 +356,10 @@ text_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
        gint all = 0;
        TnyFolderType type = TNY_FOLDER_TYPE_UNKNOWN;
        GObject *instance = NULL;
-       
+
        g_return_if_fail (column);
        g_return_if_fail (tree_model);
+       g_return_if_fail (iter != NULL);
 
        gtk_tree_model_get (tree_model, iter,
                            TNY_GTK_FOLDER_STORE_TREE_MODEL_NAME_COLUMN, &fname,
@@ -463,7 +464,7 @@ text_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
                        callback_data->previous_name = g_strdup (name); 
 
                modest_tny_account_get_mmc_account_name (TNY_STORE_ACCOUNT (instance), 
-                       on_get_mmc_account_name, callback_data);
+                                                        on_get_mmc_account_name, callback_data);
        }
                        
        g_object_unref (G_OBJECT (instance));
@@ -715,6 +716,7 @@ modest_folder_view_finalize (GObject *obj)
                priv->query = NULL;
        }
 
+/*     modest_folder_view_disable_next_folder_selection (MODEST_FOLDER_VIEW(obj)); */
        if (priv->folder_to_select) {
                g_object_unref (G_OBJECT(priv->folder_to_select));
                priv->folder_to_select = NULL;
@@ -884,6 +886,7 @@ on_account_removed (TnyAccountStore *account_store,
 
                folder_to_select_account = tny_folder_get_account (priv->folder_to_select);
                if (folder_to_select_account == account) {
+/*                     modest_folder_view_disable_next_folder_selection (self); */
                        g_object_unref (priv->folder_to_select);
                        priv->folder_to_select = NULL;
                }
@@ -2280,12 +2283,29 @@ on_row_inserted_maybe_select_folder (GtkTreeModel *tree_model, GtkTreePath  *pat
                        gtk_tree_path_free (path);
                
                }
-               g_object_unref (priv->folder_to_select);
-               priv->folder_to_select = NULL;
+
+               /* Disable next */
+               modest_folder_view_disable_next_folder_selection (self);
+/*             g_object_unref (priv->folder_to_select); */
+/*             priv->folder_to_select = NULL; */
        }
 }
 
 
+void
+modest_folder_view_disable_next_folder_selection (ModestFolderView *self) 
+{
+       ModestFolderViewPrivate *priv = NULL;
+
+       g_return_if_fail (MODEST_IS_FOLDER_VIEW (self));        
+       priv = MODEST_FOLDER_VIEW_GET_PRIVATE (self);
+
+       if (priv->folder_to_select)
+               g_object_unref(priv->folder_to_select);
+       
+       priv->folder_to_select = NULL;
+}
+
 gboolean
 modest_folder_view_select_folder (ModestFolderView *self, TnyFolder *folder, 
                                  gboolean after_change)
index 99e155b..c6efd8b 100644 (file)
@@ -176,8 +176,7 @@ void         modest_folder_view_select_first_inbox_or_local  (ModestFolderView *
  * Stores a #TnyList of selected folders in the own clibpoard of 
  * @self folder view.
  **/
-void 
-modest_folder_view_copy_selection (ModestFolderView *folder_view);
+void modest_folder_view_copy_selection (ModestFolderView *folder_view);
 
 /**
  * modest_folder_view_cut_selection:
@@ -187,8 +186,7 @@ modest_folder_view_copy_selection (ModestFolderView *folder_view);
  * @self folder view and filter them into folders tree model to
  * hide these rows in treeview.
  **/
-void 
-modest_folder_view_cut_selection (ModestFolderView *folder_view);
+void modest_folder_view_cut_selection (ModestFolderView *folder_view);
 
 
 /**
@@ -210,10 +208,7 @@ gboolean modest_folder_view_select_folder (ModestFolderView *self, TnyFolder *fo
  * 
  * Gets the selected folders to copy/cut.
  **/
-void
-modest_folder_view_paste_selection (ModestFolderView *folder_view,
-                                   TnyList **folders,
-                                   gboolean *delete);
+void modest_folder_view_paste_selection (ModestFolderView *folder_view, TnyList **folders, gboolean *delete);
 
 /*
  * modest_folder_view_show_non_move_folders:
@@ -222,9 +217,7 @@ modest_folder_view_paste_selection (ModestFolderView *folder_view,
  * 
  * Whether to show folders where no messages can be moved to 
  **/
-void
-modest_folder_view_show_non_move_folders (ModestFolderView *folder_view,
-                                   gboolean show);
+void modest_folder_view_show_non_move_folders (ModestFolderView *folder_view, gboolean show);
 
 /*
  * modest_folder_view_copy_model:
@@ -235,9 +228,19 @@ modest_folder_view_show_non_move_folders (ModestFolderView *folder_view,
  * #GtkTreeFilterModel object for that model. This copied
  * model will be asigned to @folder_view_dst. 
  **/
-void
-modest_folder_view_copy_model (ModestFolderView *folder_view_src,
-                              ModestFolderView *folder_view_dst);
+void modest_folder_view_copy_model (ModestFolderView *folder_view_src, ModestFolderView *folder_view_dst);
+
+/*
+ * modest_folder_disable_next_folder_selection:
+ * @folder_view: a #ModestFolderView
+ * 
+ * Checks if folder_to_select private field is set and 
+ * unref it in this case, assigning it to NULL to avoid 
+ * next call to on_row_inserted_maybe_select_folder does 
+ * not select any folder.
+ * 
+ **/
+void modest_folder_view_disable_next_folder_selection (ModestFolderView *self);
 
 G_END_DECLS