From 3c4863031d94dbf7323f38f560486df580e475f9 Mon Sep 17 00:00:00 2001 From: Sergio Villar Senin Date: Sat, 22 Aug 2009 11:42:51 +0200 Subject: [PATCH] Do refresh the currently viewed headers when clicking on Send&Receive Pass the refresh parametter to the get_folders call --- src/modest-ui-actions.c | 36 ++++++++++++++++++++++++++++++------ src/widgets/modest-header-view.c | 8 +++++--- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 61dd61f..e7b2b93 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -2152,17 +2152,15 @@ modest_ui_actions_on_sort (GtkAction *action, } static void -new_messages_arrived (ModestMailOperation *self, - TnyList *new_headers, - gpointer user_data) +update_account_cb (ModestMailOperation *self, + TnyList *new_headers, + gpointer user_data) { GObject *source; gboolean show_visual_notifications; source = modest_mail_operation_get_source (self); show_visual_notifications = (source) ? FALSE : TRUE; - if (source) - g_object_unref (source); /* Notify new messages have been downloaded. If the send&receive was invoked by the user then do not show any @@ -2210,6 +2208,32 @@ new_messages_arrived (ModestMailOperation *self, g_object_unref (actually_new_list); } + if (source) { + ModestHeaderView *header_view = NULL; + + /* Refresh the current view */ +#ifdef MODEST_TOOLKIT_HILDON2 + if (MODEST_IS_HEADER_WINDOW (source)) + header_view = modest_header_window_get_header_view ((ModestHeaderWindow *) source); +#else + if (MODEST_IS_MAIN_WINDOW (source)) + header_view = modest_main_window_get_child_widget ((ModestMainWindow *) source, + MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW); +#endif + if (header_view) { + TnyFolder *folder = modest_header_view_get_folder (header_view); + if (folder) { + /* We must clear first, because otherwise set_folder will ignore + the change as the folders are the same */ + modest_header_view_clear (header_view); + modest_header_view_set_folder (header_view, folder, TRUE, + (ModestWindow *) source, NULL, NULL); + g_object_unref (folder); + } + } + + g_object_unref (source); + } } typedef struct { @@ -2257,7 +2281,7 @@ do_send_receive_performer (gboolean canceled, /* Send & receive. */ modest_mail_operation_update_account (info->mail_op, info->account_name, info->poke_status, info->interactive, - new_messages_arrived, info->win); + update_account_cb, info->win); clean: /* Frees */ diff --git a/src/widgets/modest-header-view.c b/src/widgets/modest-header-view.c index bf9105d..34fdba4 100644 --- a/src/widgets/modest-header-view.c +++ b/src/widgets/modest-header-view.c @@ -1119,7 +1119,9 @@ set_folder_intern_get_headers_async_cb (TnyFolder *folder, } static void -modest_header_view_set_folder_intern (ModestHeaderView *self, TnyFolder *folder) +modest_header_view_set_folder_intern (ModestHeaderView *self, + TnyFolder *folder, + gboolean refresh) { TnyFolderType type; TnyList *headers; @@ -1146,7 +1148,7 @@ modest_header_view_set_folder_intern (ModestHeaderView *self, TnyFolder *folder) be added again by tny_gtk_header_list_model_set_folder, so we'd end up with duplicate headers. sergio */ tny_gtk_header_list_model_set_folder (TNY_GTK_HEADER_LIST_MODEL(headers), - folder, FALSE, + folder, refresh, set_folder_intern_get_headers_async_cb, NULL, self); @@ -1375,7 +1377,7 @@ modest_header_view_set_folder (ModestHeaderView *self, ModestMailOperation *mail_op = NULL; /* Set folder in the model */ - modest_header_view_set_folder_intern (self, folder); + modest_header_view_set_folder_intern (self, folder, refresh); /* Pick my reference. Nothing to do with the mail operation */ priv->folder = g_object_ref (folder); -- 1.7.9.5