* Added a new function to get the folder window
authorSergio Villar Senin <svillar@igalia.com>
Wed, 7 Jan 2009 13:03:30 +0000 (13:03 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Wed, 7 Jan 2009 13:03:30 +0000 (13:03 +0000)
* Fixes NB#97221, fixes a crash while creating new folders in move to window

pmo-trunk-r7071

src/hildon2/modest-hildon2-window-mgr.c
src/hildon2/modest-hildon2-window-mgr.h
src/hildon2/modest-platform.c
src/modest-ui-actions.c

index b628c05..ffa54a8 100644 (file)
@@ -720,3 +720,27 @@ modest_hildon2_window_mgr_show_initial_window (ModestWindowMgr *self)
 
        return initial_window;
 }
 
        return initial_window;
 }
+
+gint 
+find_folder_window (gconstpointer a,
+                   gconstpointer b)
+{
+       return (MODEST_IS_FOLDER_WINDOW (a)) ? 0 : 1;
+}
+
+ModestWindow *
+modest_hildon2_window_mgr_get_folder_window (ModestHildon2WindowMgr *self)
+{
+       ModestHildon2WindowMgrPrivate *priv;
+       GList *window;
+
+       g_return_val_if_fail (MODEST_IS_HILDON2_WINDOW_MGR (self), NULL);
+
+       priv = MODEST_HILDON2_WINDOW_MGR_GET_PRIVATE (self);
+
+       window = g_list_find_custom (priv->window_list,
+                                    NULL,
+                                    find_folder_window);
+
+       return (window != NULL) ? MODEST_WINDOW (window->data) : NULL;
+}
index b7d1cfd..49d33bb 100644 (file)
@@ -76,6 +76,8 @@ ModestWindowMgr*    modest_hildon2_window_mgr_new  (void);
 void modest_hildon2_window_mgr_set_account_store   (ModestHildon2WindowMgr *self,
                                                    TnyAccountStore *acc_store);
 
 void modest_hildon2_window_mgr_set_account_store   (ModestHildon2WindowMgr *self,
                                                    TnyAccountStore *acc_store);
 
+ModestWindow *modest_hildon2_window_mgr_get_folder_window (ModestHildon2WindowMgr *self);
+
 G_END_DECLS
 
 #endif /* __MODEST_HILDON2_WINDOW_MGR_H__ */
 G_END_DECLS
 
 #endif /* __MODEST_HILDON2_WINDOW_MGR_H__ */
index 3a4163c..a59415d 100644 (file)
@@ -824,10 +824,14 @@ modest_platform_run_folder_common_dialog (GtkWindow *parent_window,
        gint result;
        GtkSizeGroup *sizegroup;
        ModestFolderView *folder_view;
        gint result;
        GtkSizeGroup *sizegroup;
        ModestFolderView *folder_view;
+       ModestWindow *folder_window;
+       ModestHildon2WindowMgr *window_mgr;
 
 
-       g_return_val_if_fail (MODEST_IS_FOLDER_WINDOW (parent_window), GTK_RESPONSE_NONE);
+       window_mgr = (ModestHildon2WindowMgr *) modest_runtime_get_window_mgr ();
+       folder_window = modest_hildon2_window_mgr_get_folder_window (window_mgr);
+       g_return_val_if_fail (MODEST_IS_FOLDER_WINDOW (folder_window), GTK_RESPONSE_NONE);
 
 
-       folder_view = modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (parent_window));
+       folder_view = modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (folder_window));
 
        /* Ask the user for the folder name */
        dialog = gtk_dialog_new_with_buttons (dialog_title,
 
        /* Ask the user for the folder name */
        dialog = gtk_dialog_new_with_buttons (dialog_title,
@@ -922,7 +926,7 @@ modest_platform_run_folder_common_dialog (GtkWindow *parent_window,
        modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), 
                                     GTK_WINDOW (dialog), parent_window);
        gtk_widget_show_all (GTK_WIDGET(dialog));
        modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), 
                                     GTK_WINDOW (dialog), parent_window);
        gtk_widget_show_all (GTK_WIDGET(dialog));
-               
+
        result = gtk_dialog_run (GTK_DIALOG(dialog));
        if (result == GTK_RESPONSE_ACCEPT) {
                if (show_name)
        result = gtk_dialog_run (GTK_DIALOG(dialog));
        if (result == GTK_RESPONSE_ACCEPT) {
                if (show_name)
index 8fd5ae3..a752915 100644 (file)
@@ -3331,24 +3331,21 @@ modest_ui_actions_create_folder(GtkWidget *parent_window,
 #else
        parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
 #endif
 #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 */
        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,
                                                               TRUE,
                                                               parent_folder,
-                                                              create_folder_performer, 
+                                                              create_folder_performer,
                                                               parent_folder);
        }
                                                               parent_folder);
        }
-#ifdef MODEST_TOOLKIT_HILDON2
-       g_object_unref (parent_folder);
-#endif
 }
 
 }
 
-void 
+void
 modest_ui_actions_on_new_folder (GtkAction *action, ModestWindow *window)
 {
 modest_ui_actions_on_new_folder (GtkAction *action, ModestWindow *window)
 {
-       
+
        g_return_if_fail (MODEST_IS_WINDOW(window));
 
        if (MODEST_IS_MAIN_WINDOW (window)) {
        g_return_if_fail (MODEST_IS_WINDOW(window));
 
        if (MODEST_IS_MAIN_WINDOW (window)) {
@@ -4801,7 +4798,7 @@ on_move_to_dialog_response (GtkDialog *dialog,
                TnyFolderStore *dst_folder;
 
        case MODEST_GTK_RESPONSE_NEW_FOLDER:
                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:
                return;
        case GTK_RESPONSE_NONE:
        case GTK_RESPONSE_CANCEL: