Do not allow registering more than one folders window
[modest] / src / modest-ui-actions.c
index 7f21072..2c7e70a 100644 (file)
@@ -240,13 +240,16 @@ modest_ui_actions_run_account_setup_wizard (ModestWindow *win)
                window_list = modest_window_mgr_get_window_list (mgr);
                if (window_list == NULL) {
                        win = MODEST_WINDOW (modest_accounts_window_new ());
-                       modest_window_mgr_register_window (mgr, win, NULL);
-                       gtk_widget_show_all (GTK_WIDGET (win));
+                       if (modest_window_mgr_register_window (mgr, win, NULL))
+                               gtk_widget_show_all (GTK_WIDGET (win));
+                       else
+                               gtk_widget_destroy (GTK_WIDGET (win));
 
                        win = MODEST_WINDOW (modest_folder_window_new (NULL));
-                       modest_window_mgr_register_window (mgr, win, NULL);
-
-                       gtk_widget_show_all (GTK_WIDGET (win));
+                       if (modest_window_mgr_register_window (mgr, win, NULL))
+                               gtk_widget_show_all (GTK_WIDGET (win));
+                       else
+                               gtk_widget_destroy (GTK_WIDGET (win));
                } else {
                        g_list_free (window_list);
                }
@@ -3510,7 +3513,7 @@ on_rename_folder_performer (gboolean canceled,
                check_memory_full_error ((GtkWidget *) parent_window, err);
        } else {
 
-               mail_op = 
+               mail_op =
                        modest_mail_operation_new_with_error_handling (G_OBJECT(parent_window),
                                        modest_ui_actions_rename_folder_error_handler,
                                        parent_window, NULL);
@@ -3523,13 +3526,17 @@ on_rename_folder_performer (gboolean canceled,
                        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;
+               } 
+#ifdef MODEST_TOOLKIT_HILDON2
+               else if (MODEST_IS_FOLDER_WINDOW (parent_window)) {
+                       ModestFolderWindow *folder_window = (ModestFolderWindow *) parent_window;
+                       folder_view = GTK_WIDGET (modest_folder_window_get_folder_view (folder_window));
                }
+#endif
+
+               /* Clear the folders view */
+               sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_view));
+               gtk_tree_selection_unselect_all (sel);
 
                /* Actually rename the folder */
                modest_mail_operation_rename_folder (mail_op,
@@ -3537,10 +3544,10 @@ on_rename_folder_performer (gboolean canceled,
                                                     (const gchar *) (data->new_name),
                                                     on_rename_folder_cb,
                                                     folder_view);
-               g_object_unref (data->folder);
                g_object_unref (mail_op);
        }
 
+       g_object_unref (data->folder);
        g_free (data->new_name);
        g_free (data);
 }
@@ -4522,7 +4529,7 @@ modest_ui_actions_on_change_fullscreen (GtkAction *action,
  * Used by modest_ui_actions_on_details to call do_headers_action 
  */
 static void
-headers_action_show_details (TnyHeader *header, 
+headers_action_show_details (TnyHeader *header,
                             ModestWindow *window,
                             gpointer user_data)
 
@@ -4533,36 +4540,24 @@ headers_action_show_details (TnyHeader *header,
 /*
  * Show the header details in a ModestDetailsDialog widget
  */
-void     
-modest_ui_actions_on_details (GtkAction *action, 
+void
+modest_ui_actions_on_details (GtkAction *action,
                              ModestWindow *win)
 {
-       TnyList * headers_list;
-       TnyIterator *iter;
-       TnyHeader *header;              
-
        if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
                TnyMsg *msg;
+               TnyHeader *header;
 
                msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win));
                if (!msg)
                        return;
-               g_object_unref (msg);           
-
-               headers_list = get_selected_headers (win);
-               if (!headers_list)
-                       return;
-
-               iter = tny_list_create_iterator (headers_list);
 
-               header = TNY_HEADER (tny_iterator_get_current (iter));
+               header = tny_msg_get_header (msg);
                if (header) {
                        headers_action_show_details (header, win, NULL);
                        g_object_unref (header);
                }
-
-               g_object_unref (iter);
-               g_object_unref (headers_list);
+               g_object_unref (msg);
 
        } else if (MODEST_IS_MAIN_WINDOW (win)) {
                GtkWidget *folder_view, *header_view;
@@ -4869,7 +4864,7 @@ on_move_to_dialog_response (GtkDialog *dialog,
                TnyFolderStore *dst_folder;
 
        case MODEST_GTK_RESPONSE_NEW_FOLDER:
-               modest_ui_actions_create_folder (GTK_WIDGET (parent_win), folder_view);
+               modest_ui_actions_create_folder (GTK_WIDGET (dialog), folder_view);
                return;
        case GTK_RESPONSE_NONE:
        case GTK_RESPONSE_CANCEL: