From 8080554cf3dda8f799a714c202f61039ed224b86 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Tue, 14 Jan 2014 14:11:41 -0500
Subject: [PATCH] Remove expand/collapse with plus/minus keys (on numeric keypad) (#1489513)

---
 program/js/list.js |   75 +++++++++++++++++--------------------
 CHANGELOG          |    3 +
 2 files changed, 36 insertions(+), 42 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index ce6f9bc..f45bb04 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,7 +1,8 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
-- Fix issues where filesystem path was added to all-attachments (zip) file (#1489507)
+- Remove expand/collapse with plus/minus keys (on numeric keypad) (#1489513)
+- Fix issue where filesystem path was added to all-attachments (zip) file (#1489507)
 - Fix case-sensitivity of email addresses handling on compose (#1485499)
 - Don't alter Message-ID of a draft when sending (#1489409)
 - Fix issue where deprecated syntax for HTML lists was not handled properly (#1488768)
diff --git a/program/js/list.js b/program/js/list.js
index dafc9eb..022ed31 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -1150,6 +1150,7 @@
 key_press: function(e)
 {
   var target = e.target || {};
+
   if (this.focused != true || target.nodeName == 'INPUT' || target.nodeName == 'TEXTAREA' || target.nodeName == 'SELECT')
     return true;
 
@@ -1171,11 +1172,9 @@
 
     case 37: // Left arrow key
     case 39: // Right arrow key
-    case 107: // Plus sign on a numeric keypad
-    case 109: // Minus sign on a numeric keypad
       // Stop propagation
       rcube_event.cancel(e);
-      var ret = this.use_plusminus_key(keyCode, mod_key);
+      var ret = this.use_arrow_key(keyCode, mod_key);
       this.key_pressed = keyCode;
       this.modkey = mod_key;
       this.triggerEvent('keypress');
@@ -1220,55 +1219,49 @@
  */
 use_arrow_key: function(keyCode, mod_key)
 {
-  var new_row;
+  var new_row,
+    selected_row = this.rows[this.last_selected];
+
   // Safari uses the nonstandard keycodes 63232/63233 for up/down, if we're
   // using the keypress event (but not the keydown or keyup event).
   if (keyCode == 40 || keyCode == 63233) // down arrow key pressed
     new_row = this.get_next_row();
   else if (keyCode == 38 || keyCode == 63232) // up arrow key pressed
     new_row = this.get_prev_row();
+  else {
+    if (!selected_row || !selected_row.has_children)
+      return;
+
+    // expand
+    if (keyCode == 39) {
+      if (selected_row.expanded)
+        return;
+
+      if (mod_key == CONTROL_KEY || this.multiexpand)
+        this.expand_all(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);
+
+    return false;
+  }
 
   if (new_row) {
     this.select_row(new_row.uid, mod_key, false);
     this.scrollto(new_row.uid);
   }
-
-  return false;
-},
-
-
-/**
- * Special handling method for +/- keys
- */
-use_plusminus_key: function(keyCode, mod_key)
-{
-  var selected_row = this.rows[this.last_selected];
-
-  if (!selected_row || !selected_row.has_children)
-    return;
-
-  // expand
-  if (keyCode == 39 || keyCode == 107) {
-    if (selected_row.expanded)
-      return;
-
-    if (mod_key == CONTROL_KEY || this.multiexpand)
-      this.expand_all(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);
 
   return false;
 },

--
Gitblit v1.9.1