aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-ops.c
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2000-07-07 05:33:07 +0800
committerDan Winship <danw@src.gnome.org>2000-07-07 05:33:07 +0800
commit647cc8b6365be0a5b754adeb7912904ecfb655ca (patch)
tree5b2aff04c81d1665eb85d933421aaefedb05ebb8 /mail/mail-ops.c
parent5eae81928c7cb0507a4f0d5ff72bafce84baa394 (diff)
downloadgsoc2013-evolution-647cc8b6365be0a5b754adeb7912904ecfb655ca.tar.gz
gsoc2013-evolution-647cc8b6365be0a5b754adeb7912904ecfb655ca.tar.zst
gsoc2013-evolution-647cc8b6365be0a5b754adeb7912904ecfb655ca.zip
New function to select the first message on or after the given row that
* message-list.c (message_list_select_next): New function to select the first message on or after the given row that meets certain flag criteria. * folder-browser.c (etable_key): call message_list_select_next to select next non-deleted message after Delete. * mail-ops.c (real_fetch_mail): call message_list_select_next to select first unread message in current folder if it changes. (real_delete_msg): Remove the code to move the etable cursor. It only makes sense really if you deleted the message with the keyboard, so do it from there. svn path=/trunk/; revision=3927
Diffstat (limited to 'mail/mail-ops.c')
-rw-r--r--mail/mail-ops.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/mail/mail-ops.c b/mail/mail-ops.c
index a8f60d1f6a..49fec9acc4 100644
--- a/mail/mail-ops.c
+++ b/mail/mail-ops.c
@@ -119,6 +119,15 @@ check_configured (void)
return configured;
}
+static void
+select_first_unread (CamelFolder *folder, int type, gpointer data)
+{
+ FolderBrowser *fb = data;
+
+ message_list_select_next (fb->message_list, 0,
+ 0, CAMEL_MESSAGE_SEEN);
+}
+
void
real_fetch_mail (gpointer user_data )
{
@@ -131,6 +140,7 @@ real_fetch_mail (gpointer user_data )
FilterDriver *filter = NULL;
char *userrules, *systemrules;
char *tmp_mbox = NULL, *source;
+ guint handler_id;
info = (rfm_t *) user_data;
fb = info->fb;
@@ -276,11 +286,21 @@ real_fetch_mail (gpointer user_data )
g_free (userrules);
g_free (systemrules);
+ /* Attach a handler to this folder to select the first unread
+ * message iff it changes.
+ */
+ handler_id = gtk_signal_connect (GTK_OBJECT (fb->folder),
+ "folder_changed",
+ GTK_SIGNAL_FUNC (select_first_unread),
+ fb);
+
if (filter_driver_run (filter, folder, fb->folder) == -1) {
async_mail_exception_dialog ("Unable to get new mail", ex, fb);
goto cleanup;
}
+ gtk_signal_disconnect (GTK_OBJECT (fb->folder), handler_id);
+
cleanup:
g_free(tmp_mbox);
@@ -699,13 +719,6 @@ delete_msg (GtkWidget *button, gpointer user_data)
camel_exception_clear (&ex);
return;
}
-
- /* Move the cursor down a row... FIXME: should skip other
- * deleted messages. FIXME: this implementation is a bit
- * questionable. FIXME: this behaviour is very annoying
- * too.
- */
- e_table_set_cursor_row (E_TABLE (ml->etable), cursor + 1);
}
static void real_expunge_folder (gpointer user_data)