From 837a00595080e7b3d8bf137b8afd468acf33ecd5 Mon Sep 17 00:00:00 2001 From: Sergio Villar Senin Date: Wed, 7 Jan 2009 13:03:30 +0000 Subject: [PATCH] * Added a new function to get the folder window * Fixes NB#97221, fixes a crash while creating new folders in move to window pmo-trunk-r7071 --- src/hildon2/modest-hildon2-window-mgr.c | 24 ++++++++++++++++++++++++ src/hildon2/modest-hildon2-window-mgr.h | 2 ++ src/hildon2/modest-platform.c | 10 +++++++--- src/modest-ui-actions.c | 15 ++++++--------- 4 files changed, 39 insertions(+), 12 deletions(-) diff --git a/src/hildon2/modest-hildon2-window-mgr.c b/src/hildon2/modest-hildon2-window-mgr.c index b628c05..ffa54a8 100644 --- a/src/hildon2/modest-hildon2-window-mgr.c +++ b/src/hildon2/modest-hildon2-window-mgr.c @@ -720,3 +720,27 @@ modest_hildon2_window_mgr_show_initial_window (ModestWindowMgr *self) 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; +} diff --git a/src/hildon2/modest-hildon2-window-mgr.h b/src/hildon2/modest-hildon2-window-mgr.h index b7d1cfd..49d33bb 100644 --- a/src/hildon2/modest-hildon2-window-mgr.h +++ b/src/hildon2/modest-hildon2-window-mgr.h @@ -76,6 +76,8 @@ ModestWindowMgr* modest_hildon2_window_mgr_new (void); 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__ */ diff --git a/src/hildon2/modest-platform.c b/src/hildon2/modest-platform.c index 3a4163c..a59415d 100644 --- a/src/hildon2/modest-platform.c +++ b/src/hildon2/modest-platform.c @@ -824,10 +824,14 @@ modest_platform_run_folder_common_dialog (GtkWindow *parent_window, 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, @@ -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)); - + result = gtk_dialog_run (GTK_DIALOG(dialog)); if (result == GTK_RESPONSE_ACCEPT) { if (show_name) diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 8fd5ae3..a752915 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -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 - + 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); } -#ifdef MODEST_TOOLKIT_HILDON2 - g_object_unref (parent_folder); -#endif } -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)) { @@ -4801,7 +4798,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: -- 1.7.9.5