From bba25299f8d1569f560fc66f82837c95145ee121 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Thu, 22 Sep 2011 03:49:33 -0400
Subject: [PATCH] - Fix bug where after delete message rows can be added to the list of another folder (#1487752)

---
 CHANGELOG                           |    1 +
 program/steps/mail/list.inc         |    2 +-
 program/steps/mail/search.inc       |    2 +-
 program/steps/mail/folders.inc      |    2 +-
 program/steps/mail/check_recent.inc |    2 +-
 program/steps/mail/func.inc         |    2 +-
 program/steps/mail/mark.inc         |    2 +-
 program/js/app.js                   |   16 ++++++++++++++--
 program/steps/mail/move_del.inc     |    2 +-
 9 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 61d5f9a..2ae2c77 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Fix bug where after delete message rows can be added to the list of another folder (#1487752)
 - Add notice on autocompletion that not all records were displayed
 - Add option 'searchonly' for LDAP address books
 - Add Priority filter to the messages list
diff --git a/program/js/app.js b/program/js/app.js
index 65d4f06..a9fbe98 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -1641,6 +1641,10 @@
     if (!this.gui_objects.messagelist || !this.message_list)
       return false;
 
+    // Prevent from adding messages from different folder (#1487752)
+    if (flags.mbox != this.env.mailbox && !flags.skip_mbox_check)
+      return false;
+
     if (!this.env.messages[uid])
       this.env.messages[uid] = {};
 
@@ -2091,8 +2095,12 @@
   };
 
   // Initializes threads indicators/expanders after list update
-  this.init_threads = function(roots)
+  this.init_threads = function(roots, mbox)
   {
+    // #1487752
+    if (mbox && mbox != this.env.mailbox)
+      return false;
+
     for (var n=0, len=roots.length; n<len; n++)
       this.add_tree_icons(roots[n]);
     this.expand_threads();
@@ -5463,8 +5471,12 @@
   };
 
   // replace content of row count display
-  this.set_rowcount = function(text)
+  this.set_rowcount = function(text, mbox)
   {
+    // #1487752
+    if (mbox && mbox != this.env.mailbox)
+      return false;
+
     $(this.gui_objects.countdisplay).html(text);
 
     // update page navigation buttons
diff --git a/program/steps/mail/check_recent.inc b/program/steps/mail/check_recent.inc
index c7d607c..e22cccc 100644
--- a/program/steps/mail/check_recent.inc
+++ b/program/steps/mail/check_recent.inc
@@ -81,7 +81,7 @@
 
         $OUTPUT->set_env('messagecount', $all_count);
         $OUTPUT->set_env('pagecount', ceil($all_count/$IMAP->page_size));
-        $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($all_count));
+        $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($all_count), $mbox_name);
         $OUTPUT->set_env('current_page', $all_count ? $IMAP->list_page : 1);
 
         // remove old rows (and clear selection if new list is empty)
diff --git a/program/steps/mail/folders.inc b/program/steps/mail/folders.inc
index 7ba6f0c..fad2bf3 100644
--- a/program/steps/mail/folders.inc
+++ b/program/steps/mail/folders.inc
@@ -65,7 +65,7 @@
                 $OUTPUT->set_env('messagecount', 0);
                 $OUTPUT->set_env('pagecount', 0);
                 $OUTPUT->command('message_list.clear');
-                $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text());
+                $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text(), $mbox);
                 $OUTPUT->command('set_unread_count', $mbox, 0);
                 $OUTPUT->command('set_quota', rcmail_quota_content());
                 rcmail_set_unseen_count($mbox, 0);
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 57ad9c7..6ece175 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -320,7 +320,7 @@
   }
 
   if ($IMAP->threading) {
-    $OUTPUT->command('init_threads', (array) $roots);
+    $OUTPUT->command('init_threads', (array) $roots, $mbox);
   }
 }
 
diff --git a/program/steps/mail/list.inc b/program/steps/mail/list.inc
index 1f6c21e..9988a00 100644
--- a/program/steps/mail/list.inc
+++ b/program/steps/mail/list.inc
@@ -96,7 +96,7 @@
 $OUTPUT->set_env('pagecount', $pages);
 $OUTPUT->set_env('threading', (bool) $IMAP->threading);
 $OUTPUT->set_env('current_page', $count ? $IMAP->list_page : 1);
-$OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($count));
+$OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($count), $mbox_name);
 $OUTPUT->command('set_mailboxname', rcmail_get_mailbox_name_text());
 
 // add message rows
diff --git a/program/steps/mail/mark.inc b/program/steps/mail/mark.inc
index 30ffec0..c232d8c 100644
--- a/program/steps/mail/mark.inc
+++ b/program/steps/mail/mark.inc
@@ -104,7 +104,7 @@
         $OUTPUT->command('set_unread_count', $mbox, $unseen_count, ($mbox == 'INBOX'));
         rcmail_set_unseen_count($mbox, $unseen_count);
       }
-      $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count));
+      $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count), $mbox);
 
       if ($IMAP->threading)
 	    $count = get_input_value('_count', RCUBE_INPUT_POST);
diff --git a/program/steps/mail/move_del.inc b/program/steps/mail/move_del.inc
index e77979a..a42bc90 100644
--- a/program/steps/mail/move_del.inc
+++ b/program/steps/mail/move_del.inc
@@ -121,7 +121,7 @@
   }
 
   $OUTPUT->command('set_quota', rcmail_quota_content());
-  $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count));
+  $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count), $mbox);
 
   if ($IMAP->threading)
     $count = get_input_value('_count', RCUBE_INPUT_POST);
diff --git a/program/steps/mail/search.inc b/program/steps/mail/search.inc
index c038d77..d34454f 100644
--- a/program/steps/mail/search.inc
+++ b/program/steps/mail/search.inc
@@ -135,7 +135,7 @@
 $OUTPUT->set_env('search_request', $search_str ? $search_request : '');
 $OUTPUT->set_env('messagecount', $count);
 $OUTPUT->set_env('pagecount', ceil($count/$IMAP->page_size));
-$OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($count, 1));
+$OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($count, 1), $mbox);
 $OUTPUT->send();
 
 

--
Gitblit v1.9.1