[Evolution] mark_seen confusion



it's been bothering me that simply visiting a new folder will mark a
message in that folder as "seen", so I wandered into
mail/e-mail-reader.c to see if anything could be done.

This is in the EMailReaderPrivate structure, indicating that the
behavior that's bothering me isn't supposed to be happening:

        /* These flags work together to prevent message selection
         * restoration after a folder switch from automatically
         * marking the message as read.  We only want that to
         * happen when the -user- selects a message. */
        guint folder_was_just_selected : 1;
        guint restoring_message_selection : 1;
        guint avoid_next_mark_as_seen : 1;

As far as I can tell, these three fields represent two different ways to
keep a message from being marked "seen" (the first two are one approach,
and the third is another), but they don't seem to work in 3.12.2.

I don't understand the control flow in e-mail-reader.c, but after
adding a bunch of printfs it appears that there's a lot of repetition in
how these functions are invoked (see trace below), and I think this is
why the above fields don't work: the "seen" marking operation is
correctly blocked the first time through, but the block flag is then
cleared, and a subsequent "seen" marking succeeds.

I didn't find any open bugs on this issue, so unless somebody can point
one out to me, I'll open a new one.  I did finally generate a patch that
does what I want, but it's way beyond me to vouch for its overall
correctness.  I'll put the patch in the bug report (new or existing), in
case its useful.
Carl


*** change folder
e_mail_reader_set_folder()
mail_reader_set_folder()
e_mail_reader_get_mail_display()
mail_reader_set_folder()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
mail_reader_message_selected_cb()
mail_reader_message_selected_cb()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
mail_reader_emit_folder_loaded()
mail_reader_emit_folder_loaded()
mail_reader_folder_loaded()
mail_reader_folder_loaded()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
mail_reader_load_status_changed_cb()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
mail_reader_emit_folder_loaded()
mail_reader_emit_folder_loaded()
mail_reader_folder_loaded()
mail_reader_folder_loaded()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
mail_reader_message_cursor_change_cb()
schedule_timeout_mark_seen()
mail_reader_message_selected_cb()
mail_reader_message_selected_cb()
mail_reader_message_selected_timeout_cb()
e_mail_reader_get_mail_display()
mail_reader_message_selected_cb()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
mail_reader_load_status_changed_cb()
mail_reader_message_loaded_cb()
mail_reader_message_loaded()
e_mail_reader_get_mail_display()
mail_reader_set_display_formatter_for_message()
mail_reader_message_loaded_cb()
set_mail_display_part_list()
e_mail_reader_get_mail_display()
mail_reader_load_status_changed_cb()


*** select message
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
mail_reader_message_cursor_change_cb()
schedule_timeout_mark_seen()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
mail_reader_message_cursor_change_cb()
mail_reader_message_selected_cb()
mail_reader_message_selected_cb()
mail_reader_message_selected_timeout_cb()
e_mail_reader_get_mail_display()
mail_reader_message_selected_cb()
e_mail_reader_get_mail_display()
e_mail_reader_get_mail_display()
mail_reader_load_status_changed_cb()
mail_reader_message_loaded_cb()
mail_reader_message_loaded()
e_mail_reader_get_mail_display()
mail_reader_set_display_formatter_for_message()
mail_reader_message_loaded_cb()
set_mail_display_part_list()
e_mail_reader_get_mail_display()
mail_reader_load_status_changed_cb()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]