From 9367415dc36546a74f29fa26f89e907bdcf6175e Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Mon, 29 Oct 2001 01:44:31 +0000 Subject: Move the message-list cursor to the next message. (transfer_msg): If we 2001-10-28 Jeffrey Stedfast * mail-callbacks.c (transfer_msg_done): Move the message-list cursor to the next message. (transfer_msg): If we are moving messages, then pass transfer_msg_done() to mail_transfer_messages() so when it finishes it can move the cursor to the next undeleted message. svn path=/trunk/; revision=14313 --- mail/ChangeLog | 6 ++++++ mail/mail-callbacks.c | 35 +++++++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/mail/ChangeLog b/mail/ChangeLog index 5683bfce01..ef8330367d 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,5 +1,11 @@ 2001-10-28 Jeffrey Stedfast + * mail-callbacks.c (transfer_msg_done): Move the message-list + cursor to the next message. + (transfer_msg): If we are moving messages, then pass + transfer_msg_done() to mail_transfer_messages() so when it + finishes it can move the cursor to the next undeleted message. + * mail-format.c (try_inline_pgp): Check that the special PGP lines begin and end with \n so as to avoid matching against quoted PGP lines. diff --git a/mail/mail-callbacks.c b/mail/mail-callbacks.c index a37f2dd7ea..195715b383 100644 --- a/mail/mail-callbacks.c +++ b/mail/mail-callbacks.c @@ -1220,6 +1220,30 @@ forward (GtkWidget *widget, gpointer user_data) forward_message (user_data, style); } +static void +transfer_msg_done (gboolean ok, void *data) +{ + FolderBrowser *fb = data; + int row; + + if (ok && !FOLDER_BROWSER_IS_DESTROYED (fb)) { + row = e_tree_row_of_node (fb->message_list->tree, + e_tree_get_cursor (fb->message_list->tree)); + + /* If this is the last message and deleted messages + are hidden, select the previous */ + if ((row + 1 == e_tree_row_count (fb->message_list->tree)) + && mail_config_get_hide_deleted ()) + message_list_select (fb->message_list, row, MESSAGE_LIST_SELECT_PREVIOUS, + 0, CAMEL_MESSAGE_DELETED, FALSE); + else + message_list_select (fb->message_list, row, MESSAGE_LIST_SELECT_NEXT, + 0, 0, FALSE); + } + + gtk_object_unref (GTK_OBJECT (fb)); +} + static void transfer_msg (FolderBrowser *fb, gboolean delete_from_source) { @@ -1256,8 +1280,15 @@ transfer_msg (FolderBrowser *fb, gboolean delete_from_source) uids = g_ptr_array_new (); message_list_foreach (fb->message_list, enumerate_msg, uids); - mail_transfer_messages (fb->folder, uids, delete_from_source, - physical, 0, NULL, NULL); + + if (delete_from_source) { + gtk_object_ref (GTK_OBJECT (fb)); + mail_transfer_messages (fb->folder, uids, delete_from_source, + physical, 0, transfer_msg_done, fb); + } else { + mail_transfer_messages (fb->folder, uids, delete_from_source, + physical, 0, NULL, NULL); + } } void -- cgit v1.2.3