From fe22e87d29c0ba33e57d5f2ae4b73ef38131d977 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 14 Mar 2012 10:32:20 -0400
Subject: [PATCH] - Merge r6009 from trunk

---
 program/js/app.js |   17 +++++++++--------
 1 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index 35806fc..e01b72a 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -1360,7 +1360,7 @@
               if (this.folder_auto_timer)
                 window.clearTimeout(this.folder_auto_timer);
 
-              this.folder_auto_expand = k;
+              this.folder_auto_expand = this.env.mailboxes[k].id;
               this.folder_auto_timer = window.setTimeout(function() {
                 rcmail.command('collapse-folder', rcmail.folder_auto_expand);
                 rcmail.drag_start(null);
@@ -1407,8 +1407,9 @@
       div.removeClass('expanded').addClass('collapsed');
       this.env.collapsed_folders = this.env.collapsed_folders+'&'+urlencode(name)+'&';
 
-      // select parent folder if one of its childs is currently selected
-      if (this.env.mailbox.indexOf(name + this.env.delimiter) == 0)
+      // select the folder if one of its childs is currently selected
+      // don't select if it's virtual (#1488346)
+      if (this.env.mailbox.indexOf(name + this.env.delimiter) == 0 && !$(li).hasClass('virtual'))
         this.command('list', name);
     }
     else
@@ -3082,7 +3083,7 @@
       if (!vis)
         this.stop_spellchecking();
 
-      $(this.env.spellcheck.spell_container).css('visibility', vis ? 'visible' : 'hidden');
+      $(this.env.spellcheck.spell_container)[vis ? 'show' : 'hide']();
     }
   };
 
@@ -3533,9 +3534,9 @@
       mod = rcube_event.get_modifier(e);
 
     switch (key) {
-      case 38:  // key up
-      case 40:  // key down
-        if (!this.ksearch_pane)
+      case 38:  // arrow up
+      case 40:  // arrow down
+        if (!this.ksearch_visible())
           break;
 
         var dir = key==38 ? 1 : 0;
@@ -4065,7 +4066,7 @@
   this.delete_contacts = function()
   {
     var selection = this.contact_list.get_selection(),
-      undelete = this.env.address_sources[this.env.source].undelete;
+      undelete = this.env.source && this.env.address_sources[this.env.source].undelete;
 
     // exit if no mailbox specified or if selection is empty
     if (!(selection.length || this.env.cid) || (!undelete && !confirm(this.get_label('deletecontactconfirm'))))

--
Gitblit v1.9.1