call e_table_model_row_changed, not e_table_model_changed so we do less
* message-list.c (message_changed): call e_table_model_row_changed, not e_table_model_changed so we do less work, and don't lose the current selection. (select_msg): Set up a timer to mark the displayed message as "seen" if it's selected for longer than 1.5 seconds (a number pulled out of Matt's butt). (ml_value_at): Use the MESSAGE_STATUS column for read/unread as well as deleted. svn path=/trunk/; revision=3293
This commit is contained in:
@ -1,3 +1,14 @@
|
||||
2000-05-30 Dan Winship <danw@helixcode.com>
|
||||
|
||||
* message-list.c (message_changed): call
|
||||
e_table_model_row_changed, not e_table_model_changed so we do less
|
||||
work, and don't lose the current selection.
|
||||
(select_msg): Set up a timer to mark the displayed message as
|
||||
"seen" if it's selected for longer than 1.5 seconds (a number
|
||||
pulled out of Matt's butt).
|
||||
(ml_value_at): Use the MESSAGE_STATUS column for read/unread as
|
||||
well as deleted.
|
||||
|
||||
2000-05-30 Christopher James Lahey <clahey@helixcode.com>
|
||||
|
||||
* message-list.c, message-list.h: Added bold for unread messages.
|
||||
|
@ -81,9 +81,27 @@ static CamelMessageInfo *get_message_info(MessageList *message_list, gint row)
|
||||
}
|
||||
|
||||
static void
|
||||
message_changed(CamelMimeMessage *m, enum _MessageChangeType type, MessageList *message_list)
|
||||
message_changed (CamelMimeMessage *m, enum _MessageChangeType type,
|
||||
MessageList *message_list)
|
||||
{
|
||||
e_table_model_changed (message_list->table_model);
|
||||
guint row = GPOINTER_TO_UINT (gtk_object_get_data (GTK_OBJECT (m),
|
||||
"row"));
|
||||
|
||||
e_table_model_row_changed (message_list->table_model, row);
|
||||
}
|
||||
|
||||
static gint
|
||||
mark_msg_seen (gpointer data)
|
||||
{
|
||||
CamelMimeMessage *msg = data;
|
||||
guint32 flags;
|
||||
|
||||
g_return_if_fail (CAMEL_IS_MIME_MESSAGE (msg));
|
||||
|
||||
flags = camel_mime_message_get_flags (msg);
|
||||
camel_mime_message_set_flags (msg, CAMEL_MESSAGE_SEEN,
|
||||
CAMEL_MESSAGE_SEEN);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* select a message and display it */
|
||||
@ -93,6 +111,7 @@ select_msg (MessageList *message_list, gint row)
|
||||
CamelException ex;
|
||||
CamelMimeMessage *message = NULL;
|
||||
CamelMessageInfo *msg_info;
|
||||
static guint timeout;
|
||||
|
||||
camel_exception_init (&ex);
|
||||
|
||||
@ -109,10 +128,15 @@ select_msg (MessageList *message_list, gint row)
|
||||
}
|
||||
|
||||
if (message) {
|
||||
gtk_signal_connect((GtkObject *)message, "message_changed",
|
||||
if (timeout)
|
||||
gtk_timeout_remove (timeout);
|
||||
gtk_object_set_data (GTK_OBJECT (message), "row",
|
||||
GUINT_TO_POINTER (row));
|
||||
gtk_signal_connect(GTK_OBJECT (message), "message_changed",
|
||||
message_changed, message_list);
|
||||
mail_display_set_message (message_list->parent_folder_browser->mail_display,
|
||||
CAMEL_MEDIUM (message));
|
||||
timeout = gtk_timeout_add (1500, mark_msg_seen, message);
|
||||
gtk_object_unref (GTK_OBJECT (message));
|
||||
}
|
||||
}
|
||||
@ -186,6 +210,8 @@ ml_value_at (ETableModel *etm, int col, int row, void *data)
|
||||
case COL_MESSAGE_STATUS:
|
||||
if (msg_info->flags & CAMEL_MESSAGE_DELETED)
|
||||
retval = GINT_TO_POINTER (2);
|
||||
else if (msg_info->flags & CAMEL_MESSAGE_SEEN)
|
||||
retval = GINT_TO_POINTER (0);
|
||||
else
|
||||
retval = GINT_TO_POINTER (1);
|
||||
break;
|
||||
|
Reference in New Issue
Block a user