From 78c8bb85778d35a4214ba6626829d180e12af9de Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 16 Jun 2000 23:50:29 +0000 Subject: Implement clicking on the envelope icon to set read/unread. Based on a * message-list.c (ml_set_value_at): Implement clicking on the envelope icon to set read/unread. Based on a patch by clahey. (select_msg): keep the timeout id for the "seen" flagging in the message_list structure, so ml_set_value_at can clear it so it doesn't re-mark a message seen after you click it unseen. svn path=/trunk/; revision=3601 --- mail/message-list.c | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 5032e7c6af..9b6de53d82 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -158,16 +158,15 @@ select_msg (MessageList *message_list, gint row) } if (message) { - static guint timeout; - - if (timeout) - gtk_timeout_remove (timeout); + if (message_list->seen_id) + gtk_timeout_remove (message_list->seen_id); mail_display_set_message (message_list->parent_folder_browser->mail_display, CAMEL_MEDIUM (message)); gtk_object_unref (GTK_OBJECT (message)); - timeout = gtk_timeout_add (1500, mark_msg_seen, message_list); + message_list->seen_id = + gtk_timeout_add (1500, mark_msg_seen, message_list); } } @@ -314,12 +313,38 @@ ml_value_at (ETableModel *etm, int col, int row, void *data) static void ml_set_value_at (ETableModel *etm, int col, int row, const void *value, void *data) { + MessageList *message_list = data; + CamelMessageInfo *msg_info; + + switch (col) { + case COL_MESSAGE_STATUS: + msg_info = get_message_info (message_list, row); + camel_folder_set_message_flags (message_list->folder, + msg_info->uid, + CAMEL_MESSAGE_SEEN, + ~(msg_info->flags), NULL); + if (message_list->seen_id) { + gtk_timeout_remove (message_list->seen_id); + message_list->seen_id = 0; + } + break; + default: + break; + } + } static gboolean ml_is_cell_editable (ETableModel *etm, int col, int row, void *data) { - return FALSE; + switch (col) { + case COL_MESSAGE_STATUS: + return TRUE; + break; + default: + return FALSE; + break; + } } static void * @@ -865,8 +890,6 @@ message_list_set_search (MessageList *message_list, const char *search) static void folder_changed(CamelFolder *f, int type, MessageList *message_list) { - int row; - if (message_list->summary_table) camel_folder_free_summary(f, message_list->summary_table); message_list->summary_table = camel_folder_get_summary (f, NULL); -- cgit v1.2.3