From fecd4735be2de6146445e24edb56d9c865179bf6 Mon Sep 17 00:00:00 2001 From: Clemens Zeidler Date: Mon, 28 Feb 2011 23:13:09 +0000 Subject: [PATCH] The read-next button was not working in a tracker query window because the message was marked as read too early. In this case the mail left the unread query and the next message can't be retrieved from tracker. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40747 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/mail/MailWindow.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/apps/mail/MailWindow.cpp b/src/apps/mail/MailWindow.cpp index 8116196c38..0b8d7342aa 100644 --- a/src/apps/mail/MailWindow.cpp +++ b/src/apps/mail/MailWindow.cpp @@ -1479,13 +1479,12 @@ TMailWindow::MessageReceived(BMessage *msg) break; case M_READ: wasReadMsg = true; - SetCurrentMessageRead(B_READ); - _UpdateReadButton(); msg->what = M_NEXTMSG; case M_PREVMSG: case M_NEXTMSG: if (fRef != NULL) { entry_ref nextRef = *fRef; + if (GetTrackerWindowFile(&nextRef, (msg->what == M_NEXTMSG))) { TMailWindow *window = static_cast(be_app) ->FindWindow(nextRef); @@ -1494,9 +1493,9 @@ TMailWindow::MessageReceived(BMessage *msg) read_flags currentFlag; if (read_read_attr(node, currentFlag) != B_OK) currentFlag = B_UNREAD; - if (fAutoMarkRead == true) + if (fAutoMarkRead == true || wasReadMsg) SetCurrentMessageRead(B_READ); - else if (currentFlag != B_READ && !wasReadMsg) + else if (currentFlag != B_READ) SetCurrentMessageRead(B_SEEN); OpenMessage(&nextRef, @@ -1504,14 +1503,17 @@ TMailWindow::MessageReceived(BMessage *msg) } else { window->Activate(); - //fSent = true; + if (wasReadMsg) + SetCurrentMessageRead(B_READ); PostMessage(B_CLOSE_REQUESTED); } SetTrackerSelectionToCurrent(); } else { - if (wasReadMsg) + if (wasReadMsg) { + SetCurrentMessageRead(B_READ); PostMessage(B_CLOSE_REQUESTED); + } beep(); } }