X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmaemo%2Fmodest-msg-view-window.c;h=4cef99bad24f0b452ca0a151012563718cc5c03f;hp=aa0afd227534b28eafff04aaecf8ef055e299a84;hb=b13cf9aff03815f809f28f020a58524d6d1c66e1;hpb=d1c8393fb05baf329c0f34fb8f528d077ffe916e diff --git a/src/maemo/modest-msg-view-window.c b/src/maemo/modest-msg-view-window.c index aa0afd2..4cef99b 100644 --- a/src/maemo/modest-msg-view-window.c +++ b/src/maemo/modest-msg-view-window.c @@ -726,8 +726,8 @@ select_next_valid_row (GtkTreeModel *model, /* TODO: This should be in _init(), with the parameters as properties. */ static void modest_msg_view_window_construct (ModestMsgViewWindow *self, - const gchar *modest_account_name, - const gchar *msg_uid) + const gchar *modest_account_name, + const gchar *msg_uid) { GObject *obj = NULL; ModestMsgViewWindowPrivate *priv = NULL; @@ -826,7 +826,6 @@ modest_msg_view_window_construct (ModestMsgViewWindow *self, /* Init the clipboard actions dim status */ modest_msg_view_grab_focus(MODEST_MSG_VIEW (priv->msg_view)); - gtk_widget_show_all (GTK_WIDGET (obj)); update_window_title (MODEST_MSG_VIEW_WINDOW (obj)); @@ -871,11 +870,16 @@ modest_msg_view_window_new_with_header_model (TnyMsg *msg, if (header_view != NULL){ header_folder = modest_header_view_get_folder(header_view); - priv->is_outbox = (modest_tny_folder_guess_folder_type (header_folder) == TNY_FOLDER_TYPE_OUTBOX); - g_assert(header_folder != NULL); - priv->header_folder_id = tny_folder_get_id(header_folder); - g_assert(priv->header_folder_id != NULL); - g_object_unref(header_folder); + /* This could happen if the header folder was + unseleted before opening this msg window (for + example if the user selects an account in the + folder view of the main window */ + if (header_folder) { + priv->is_outbox = (modest_tny_folder_guess_folder_type (header_folder) == TNY_FOLDER_TYPE_OUTBOX); + priv->header_folder_id = tny_folder_get_id(header_folder); + g_assert(priv->header_folder_id != NULL); + g_object_unref(header_folder); + } } priv->header_model = g_object_ref(model); @@ -948,6 +952,8 @@ modest_msg_view_window_new_for_search_result (TnyMsg *msg, update_window_title (window); modest_msg_view_window_update_priority (window); + gtk_widget_show_all (GTK_WIDGET (window)); + return MODEST_WINDOW(window); } @@ -971,6 +977,8 @@ modest_msg_view_window_new_for_attachment (TnyMsg *msg, tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg); update_window_title (MODEST_MSG_VIEW_WINDOW (obj)); + gtk_widget_show_all (GTK_WIDGET (obj)); + /* Check dimming rules */ modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (obj)); modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (obj)); @@ -1100,10 +1108,10 @@ void modest_msg_view_window_on_row_reordered( * the new model. In this case the view will be detached from it's * header folder. From this point the next/prev buttons are dimmed. */ -void modest_msg_view_window_update_model_replaced( - ModestHeaderViewObserver *observer, - GtkTreeModel *model, - const gchar *tny_folder_id){ +void +modest_msg_view_window_update_model_replaced(ModestHeaderViewObserver *observer, + GtkTreeModel *model, + const gchar *tny_folder_id){ ModestMsgViewWindowPrivate *priv = NULL; ModestMsgViewWindow *window = NULL; @@ -1117,7 +1125,8 @@ void modest_msg_view_window_update_model_replaced( * not care about it's model (msg list). Else if the * header-view shows the folder the msg shown by us is in, we * shall replace our model reference and make some check. */ - if(tny_folder_id == NULL || !g_str_equal(tny_folder_id, priv->header_folder_id)) + if(tny_folder_id == NULL || + (priv->header_folder_id && !g_str_equal(tny_folder_id, priv->header_folder_id))) return; /* Model is changed(replaced), so we should forget the old @@ -1621,7 +1630,7 @@ message_reader_performer (gboolean canceled, /* New mail operation */ mail_op = modest_mail_operation_new_with_error_handling (G_OBJECT(parent_window), - modest_ui_actions_get_msgs_full_error_handler, + modest_ui_actions_disk_operations_error_handler, NULL, NULL); modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op); @@ -2233,9 +2242,8 @@ on_mail_operation_finished (ModestMailOperation *mail_op, if (op_type == MODEST_MAIL_OPERATION_TYPE_RECEIVE || op_type == MODEST_MAIL_OPERATION_TYPE_OPEN ) { while (tmp) { - modest_progress_object_remove_operation ( - MODEST_PROGRESS_OBJECT (tmp->data), - mail_op); + modest_progress_object_remove_operation (MODEST_PROGRESS_OBJECT (tmp->data), + mail_op); tmp = g_slist_next (tmp); } @@ -2584,7 +2592,8 @@ modest_msg_view_window_save_attachments (ModestMsgViewWindow *window, TnyList *m TnyMimePart *mime_part = (TnyMimePart *) tny_iterator_get_current (iter); g_object_unref (iter); if (!modest_tny_mime_part_is_msg (mime_part) && - modest_tny_mime_part_is_attachment_for_modest (mime_part)) { + modest_tny_mime_part_is_attachment_for_modest (mime_part) && + !tny_mime_part_is_purged (mime_part)) { filename = tny_mime_part_get_filename (mime_part); } else { /* TODO: show any error? */ @@ -2614,6 +2623,7 @@ modest_msg_view_window_save_attachments (ModestMsgViewWindow *window, TnyList *m /* if multiple, set multiple string */ if (save_multiple_str) { g_object_set (G_OBJECT (save_dialog), "save-multiple", save_multiple_str, NULL); + gtk_window_set_title (GTK_WINDOW (save_dialog), _FM("sfil_ti_save_objects_files")); } /* show dialog */ @@ -2630,15 +2640,17 @@ modest_msg_view_window_save_attachments (ModestMsgViewWindow *window, TnyList *m while (!tny_iterator_is_done (iter)) { TnyMimePart *mime_part = (TnyMimePart *) tny_iterator_get_current (iter); - if ((modest_tny_mime_part_is_attachment_for_modest (mime_part)) && + if ((modest_tny_mime_part_is_attachment_for_modest (mime_part)) && + !tny_mime_part_is_purged (mime_part) && (tny_mime_part_get_filename (mime_part) != NULL)) { SaveMimePartPair *pair; pair = g_slice_new0 (SaveMimePartPair); if (save_multiple_str) { - pair->filename = - g_build_filename (chooser_uri, - tny_mime_part_get_filename (mime_part), NULL); + gchar *escaped = gnome_vfs_escape_slashes ( + tny_mime_part_get_filename (mime_part)); + pair->filename = g_build_filename (chooser_uri, escaped, NULL); + g_free (escaped); } else { pair->filename = g_strdup (chooser_uri); }