[haiku-commits] r41020 - haiku/trunk/src/apps/mail

  • From: clemens.zeidler@xxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 18 Mar 2011 11:15:42 +0100 (CET)

Author: czeidler
Date: 2011-03-18 11:15:42 +0100 (Fri, 18 Mar 2011)
New Revision: 41020
Changeset: https://dev.haiku-os.org/changeset/41020

Modified:
   haiku/trunk/src/apps/mail/MailWindow.cpp
   haiku/trunk/src/apps/mail/MailWindow.h
Log:
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.

Modified: haiku/trunk/src/apps/mail/MailWindow.cpp
===================================================================
--- haiku/trunk/src/apps/mail/MailWindow.cpp    2011-03-18 09:15:28 UTC (rev 
41019)
+++ haiku/trunk/src/apps/mail/MailWindow.cpp    2011-03-18 10:15:42 UTC (rev 
41020)
@@ -796,9 +796,9 @@
 
 
 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();
        if (status != B_OK)
                return;
@@ -811,7 +811,7 @@
        // don't wait for the server write the attribute directly
        write_read_attr(node, flag);
 
-       BMailDaemon::MarkAsRead(account, *fRef, flag);
+       BMailDaemon::MarkAsRead(account, *message, flag);
 }
 
 
@@ -1130,7 +1130,7 @@
                        }
                        if (fIncoming) {
                                read_flags flag = (fAutoMarkRead == true) ? 
B_READ : B_SEEN;
-                               SetCurrentMessageRead(flag);
+                               MarkMessageRead(fRef, flag);
                        }
 
                        if (!fTrackerMessenger.IsValid() || !fIncoming) {
@@ -1461,12 +1461,11 @@
                //      Navigation Messages
                //
                case M_UNREAD:
-                       SetCurrentMessageRead(B_SEEN);
+                       MarkMessageRead(fRef, B_SEEN);
                        _UpdateReadButton();
                        break;
                case M_READ:
                        wasReadMsg = true;
-                       SetCurrentMessageRead(B_READ);
                        _UpdateReadButton();
                        msg->what = M_NEXTMSG;
                case M_PREVMSG:
@@ -1474,6 +1473,7 @@
                {
                        if (fRef == NULL)
                                break;
+                       entry_ref orgRef = *fRef;
                        entry_ref nextRef = *fRef;
                        if (GetTrackerWindowFile(&nextRef, (msg->what == 
M_NEXTMSG))) {
                                TMailWindow *window = static_cast<TMailApp 
*>(be_app)
@@ -1484,15 +1484,14 @@
                                        if (read_read_attr(node, currentFlag) 
!= B_OK)
                                                currentFlag = B_UNREAD;
                                        if (fAutoMarkRead == true)
-                                               SetCurrentMessageRead(B_READ);
+                                               MarkMessageRead(fRef, B_READ);
                                        else if (currentFlag != B_READ && 
!wasReadMsg)
-                                               SetCurrentMessageRead(B_SEEN);
+                                               MarkMessageRead(fRef, B_SEEN);
 
                                        OpenMessage(&nextRef,
                                                
fHeaderView->fCharacterSetUserSees);
                                } else {
                                        window->Activate();
-
                                        //fSent = true;
                                        PostMessage(B_CLOSE_REQUESTED);
                                }
@@ -1501,8 +1500,11 @@
                        } else {
                                if (wasReadMsg)
                                        PostMessage(B_CLOSE_REQUESTED);
+
                                beep();
                        }
+                       if (wasReadMsg)
+                               MarkMessageRead(&orgRef, B_READ);
                        break;
                }
 
@@ -1713,14 +1715,14 @@
        } else if (fRef != NULL && !fKeepStatusOnQuit) {
                // ...Otherwise just set the message read
                if (fAutoMarkRead == true)
-                       SetCurrentMessageRead(B_READ);
+                       MarkMessageRead(fRef, B_READ);
                else {
                        BNode node(fRef);
                        read_flags currentFlag;
                        if (read_read_attr(node, currentFlag) != B_OK)
                                currentFlag = B_UNREAD;
                        if (currentFlag == B_UNREAD)
-                               SetCurrentMessageRead(B_SEEN);
+                               MarkMessageRead(fRef, B_SEEN);
                }
        }
 

Modified: haiku/trunk/src/apps/mail/MailWindow.h
===================================================================
--- haiku/trunk/src/apps/mail/MailWindow.h      2011-03-18 09:15:28 UTC (rev 
41019)
+++ haiku/trunk/src/apps/mail/MailWindow.h      2011-03-18 10:15:42 UTC (rev 
41020)
@@ -108,7 +108,8 @@
                                void                    
SaveTrackerPosition(entry_ref*);
                                void                    
SetOriginatingWindow(BWindow* window);
 
-                               void                    
SetCurrentMessageRead(read_flags flag);
+                               void                    
MarkMessageRead(entry_ref* message,
+                                                                       
read_flags flag);
                                void                    
SetTrackerSelectionToCurrent();
                                TMailWindow*    FrontmostWindow();
                                void                    UpdateViews();


Other related posts:

  • » [haiku-commits] r41020 - haiku/trunk/src/apps/mail - clemens . zeidler