When iterating through mails in a tracker read query window, don't mark the old message as read before retrieving the next message. This would fail because the old message left the query.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41020 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -796,9 +796,9 @@ TMailWindow::SetTrackerSelectionToCurrent()
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TMailWindow::SetCurrentMessageRead(read_flags flag)
|
TMailWindow::MarkMessageRead(entry_ref* message, read_flags flag)
|
||||||
{
|
{
|
||||||
BNode node(fRef);
|
BNode node(message);
|
||||||
status_t status = node.InitCheck();
|
status_t status = node.InitCheck();
|
||||||
if (status != B_OK)
|
if (status != B_OK)
|
||||||
return;
|
return;
|
||||||
@@ -811,7 +811,7 @@ TMailWindow::SetCurrentMessageRead(read_flags flag)
|
|||||||
// don't wait for the server write the attribute directly
|
// don't wait for the server write the attribute directly
|
||||||
write_read_attr(node, flag);
|
write_read_attr(node, flag);
|
||||||
|
|
||||||
BMailDaemon::MarkAsRead(account, *fRef, flag);
|
BMailDaemon::MarkAsRead(account, *message, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1130,7 +1130,7 @@ TMailWindow::MessageReceived(BMessage *msg)
|
|||||||
}
|
}
|
||||||
if (fIncoming) {
|
if (fIncoming) {
|
||||||
read_flags flag = (fAutoMarkRead == true) ? B_READ : B_SEEN;
|
read_flags flag = (fAutoMarkRead == true) ? B_READ : B_SEEN;
|
||||||
SetCurrentMessageRead(flag);
|
MarkMessageRead(fRef, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!fTrackerMessenger.IsValid() || !fIncoming) {
|
if (!fTrackerMessenger.IsValid() || !fIncoming) {
|
||||||
@@ -1461,12 +1461,11 @@ TMailWindow::MessageReceived(BMessage *msg)
|
|||||||
// Navigation Messages
|
// Navigation Messages
|
||||||
//
|
//
|
||||||
case M_UNREAD:
|
case M_UNREAD:
|
||||||
SetCurrentMessageRead(B_SEEN);
|
MarkMessageRead(fRef, B_SEEN);
|
||||||
_UpdateReadButton();
|
_UpdateReadButton();
|
||||||
break;
|
break;
|
||||||
case M_READ:
|
case M_READ:
|
||||||
wasReadMsg = true;
|
wasReadMsg = true;
|
||||||
SetCurrentMessageRead(B_READ);
|
|
||||||
_UpdateReadButton();
|
_UpdateReadButton();
|
||||||
msg->what = M_NEXTMSG;
|
msg->what = M_NEXTMSG;
|
||||||
case M_PREVMSG:
|
case M_PREVMSG:
|
||||||
@@ -1474,6 +1473,7 @@ TMailWindow::MessageReceived(BMessage *msg)
|
|||||||
{
|
{
|
||||||
if (fRef == NULL)
|
if (fRef == NULL)
|
||||||
break;
|
break;
|
||||||
|
entry_ref orgRef = *fRef;
|
||||||
entry_ref nextRef = *fRef;
|
entry_ref nextRef = *fRef;
|
||||||
if (GetTrackerWindowFile(&nextRef, (msg->what == M_NEXTMSG))) {
|
if (GetTrackerWindowFile(&nextRef, (msg->what == M_NEXTMSG))) {
|
||||||
TMailWindow *window = static_cast<TMailApp *>(be_app)
|
TMailWindow *window = static_cast<TMailApp *>(be_app)
|
||||||
@@ -1484,15 +1484,14 @@ TMailWindow::MessageReceived(BMessage *msg)
|
|||||||
if (read_read_attr(node, currentFlag) != B_OK)
|
if (read_read_attr(node, currentFlag) != B_OK)
|
||||||
currentFlag = B_UNREAD;
|
currentFlag = B_UNREAD;
|
||||||
if (fAutoMarkRead == true)
|
if (fAutoMarkRead == true)
|
||||||
SetCurrentMessageRead(B_READ);
|
MarkMessageRead(fRef, B_READ);
|
||||||
else if (currentFlag != B_READ && !wasReadMsg)
|
else if (currentFlag != B_READ && !wasReadMsg)
|
||||||
SetCurrentMessageRead(B_SEEN);
|
MarkMessageRead(fRef, B_SEEN);
|
||||||
|
|
||||||
OpenMessage(&nextRef,
|
OpenMessage(&nextRef,
|
||||||
fHeaderView->fCharacterSetUserSees);
|
fHeaderView->fCharacterSetUserSees);
|
||||||
} else {
|
} else {
|
||||||
window->Activate();
|
window->Activate();
|
||||||
|
|
||||||
//fSent = true;
|
//fSent = true;
|
||||||
PostMessage(B_CLOSE_REQUESTED);
|
PostMessage(B_CLOSE_REQUESTED);
|
||||||
}
|
}
|
||||||
@@ -1501,8 +1500,11 @@ TMailWindow::MessageReceived(BMessage *msg)
|
|||||||
} else {
|
} else {
|
||||||
if (wasReadMsg)
|
if (wasReadMsg)
|
||||||
PostMessage(B_CLOSE_REQUESTED);
|
PostMessage(B_CLOSE_REQUESTED);
|
||||||
|
|
||||||
beep();
|
beep();
|
||||||
}
|
}
|
||||||
|
if (wasReadMsg)
|
||||||
|
MarkMessageRead(&orgRef, B_READ);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1713,14 +1715,14 @@ TMailWindow::QuitRequested()
|
|||||||
} else if (fRef != NULL && !fKeepStatusOnQuit) {
|
} else if (fRef != NULL && !fKeepStatusOnQuit) {
|
||||||
// ...Otherwise just set the message read
|
// ...Otherwise just set the message read
|
||||||
if (fAutoMarkRead == true)
|
if (fAutoMarkRead == true)
|
||||||
SetCurrentMessageRead(B_READ);
|
MarkMessageRead(fRef, B_READ);
|
||||||
else {
|
else {
|
||||||
BNode node(fRef);
|
BNode node(fRef);
|
||||||
read_flags currentFlag;
|
read_flags currentFlag;
|
||||||
if (read_read_attr(node, currentFlag) != B_OK)
|
if (read_read_attr(node, currentFlag) != B_OK)
|
||||||
currentFlag = B_UNREAD;
|
currentFlag = B_UNREAD;
|
||||||
if (currentFlag == B_UNREAD)
|
if (currentFlag == B_UNREAD)
|
||||||
SetCurrentMessageRead(B_SEEN);
|
MarkMessageRead(fRef, B_SEEN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -108,7 +108,8 @@ class TMailWindow : public BWindow {
|
|||||||
void SaveTrackerPosition(entry_ref*);
|
void SaveTrackerPosition(entry_ref*);
|
||||||
void SetOriginatingWindow(BWindow* window);
|
void SetOriginatingWindow(BWindow* window);
|
||||||
|
|
||||||
void SetCurrentMessageRead(read_flags flag);
|
void MarkMessageRead(entry_ref* message,
|
||||||
|
read_flags flag);
|
||||||
void SetTrackerSelectionToCurrent();
|
void SetTrackerSelectionToCurrent();
|
||||||
TMailWindow* FrontmostWindow();
|
TMailWindow* FrontmostWindow();
|
||||||
void UpdateViews();
|
void UpdateViews();
|
||||||
|
|||||||
Reference in New Issue
Block a user