From 6884f3f1f7542eb1dab8bb39cab33888d3fd84c5 Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Mon, 20 Jan 2014 05:41:58 -0500
Subject: [PATCH] Re-submit search query when switching folders

---
 program/js/app.js |   28 ++++++++++++++++++----------
 1 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index 2401e1e..e276f6f 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -697,9 +697,17 @@
         break;
 
       case 'list':
-        // TODO: don't reset search but re-send for the new folder
-        if (props && props != '')
-          this.reset_qsearch();
+        // re-send for the selected folder
+        if (props && props != '' && this.env.search_request) {
+          var oldmbox = this.env.search_scope == 'all' ? '*' : this.env.mailbox;
+          this.env.search_mods[props] = this.env.search_mods[oldmbox];  // copy search mods from active search
+          this.env.mailbox = props;
+          this.env.search_scope = 'base';
+          this.qsearch(this.gui_objects.qsearchbox.value);
+          this.select_folder(this.env.mailbox, '', true);
+          break;
+        }
+
         if (this.env.action == 'compose' && this.env.extwin)
           window.close();
         else if (this.task == 'mail') {
@@ -4100,11 +4108,11 @@
   };
 
   // send remote request to search mail or contacts
-  this.qsearch = function(value)
+  this.qsearch = function(value, mods)
   {
     if (value != '') {
       var r, lock = this.set_busy(true, 'searching'),
-        url = this.search_params(value);
+        url = this.search_params(value, null, mods);
 
       if (this.message_list)
         this.clear_message_list();
@@ -4128,7 +4136,7 @@
   };
 
   // build URL params for search
-  this.search_params = function(search, filter)
+  this.search_params = function(search, filter, smods)
   {
     var n, url = {}, mods_arr = [],
       mods = this.env.search_mods,
@@ -4147,11 +4155,11 @@
     if (search) {
       url._q = search;
 
-      if (mods && this.message_list)
-        mods = mods[mbox] ? mods[mbox] : mods['*'];
+      if (!smods && mods && this.message_list)
+        smods = mods[mbox] || mods['*'];
 
-      if (mods) {
-        for (n in mods)
+      if (smods) {
+        for (n in smods)
           mods_arr.push(n);
         url._headers = mods_arr.join(',');
       }

--
Gitblit v1.9.1