From a222f5c045c2a6c14b3c961b83a2d8ee9d3c9331 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <machniak@kolabsys.com>
Date: Tue, 29 Oct 2013 15:02:05 -0400
Subject: [PATCH] Fix an issue where pressing minus key on contacts list was hiding list records (#1489393)

---
 program/js/list.js |   20 ++++++++++++++++----
 CHANGELOG          |    1 +
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 8743085..5b0e708 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Fix an issue where pressing minus key on contacts list was hiding list records (#1489393)
 - Fix an issue where shift + arrow-up key wasn't selecting all messages in collapsed thread (#1489397)
 - Added icon for priority column in messages list header (#1489234)
 - New feature "Canned Responses" to save and recall boilerplate text snippets
diff --git a/program/js/list.js b/program/js/list.js
index 8843cd9..8ad0a33 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -1204,21 +1204,33 @@
 use_plusminus_key: function(keyCode, mod_key)
 {
   var selected_row = this.rows[this.last_selected];
-  if (!selected_row)
+
+  if (!selected_row || !selected_row.has_children)
     return;
 
   if (keyCode == 32)
     keyCode = selected_row.expanded ? 109 : 61;
-  if (keyCode == 61 || keyCode == 107)
+
+  // expand
+  if (keyCode == 61 || keyCode == 107) {
+    if (selected_row.expanded)
+      return;
+
     if (mod_key == CONTROL_KEY || this.multiexpand)
       this.expand_all(selected_row);
     else
-     this.expand(selected_row);
-  else
+      this.expand(selected_row);
+  }
+  // collapse
+  else {
+    if (!selected_row.expanded)
+      return;
+
     if (mod_key == CONTROL_KEY || this.multiexpand)
       this.collapse_all(selected_row);
     else
       this.collapse(selected_row);
+  }
 
   this.update_expando(selected_row.uid, selected_row.expanded);
 

--
Gitblit v1.9.1