summaryrefslogtreecommitdiff
path: root/program/js/list.js
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2014-01-14 20:11:41 +0100
committerAleksander Machniak <alec@alec.pl>2014-01-14 20:11:41 +0100
commit8080554cf3dda8f799a714c202f61039ed224b86 (patch)
tree9172f6f781a950f5aa1ddc8cfa89537aa8e825f3 /program/js/list.js
parent7c28d45c8e9a448002595d26ca5cf88726b47123 (diff)
Remove expand/collapse with plus/minus keys (on numeric keypad) (#1489513)
Diffstat (limited to 'program/js/list.js')
-rw-r--r--program/js/list.js69
1 files changed, 31 insertions, 38 deletions
diff --git a/program/js/list.js b/program/js/list.js
index dafc9eb66..022ed3180 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -1150,6 +1150,7 @@ highlight_children: function(id, status)
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 @@ key_press: function(e)
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,56 +1219,50 @@ key_press: function(e)
*/
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;
- if (new_row) {
- this.select_row(new_row.uid, mod_key, false);
- this.scrollto(new_row.uid);
- }
-
- return false;
-},
-
+ // expand
+ if (keyCode == 39) {
+ if (selected_row.expanded)
+ return;
-/**
- * Special handling method for +/- keys
- */
-use_plusminus_key: function(keyCode, mod_key)
-{
- var selected_row = this.rows[this.last_selected];
+ 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 (!selected_row || !selected_row.has_children)
- return;
+ if (mod_key == CONTROL_KEY || this.multiexpand)
+ this.collapse_all(selected_row);
+ else
+ this.collapse(selected_row);
+ }
- // expand
- if (keyCode == 39 || keyCode == 107) {
- if (selected_row.expanded)
- return;
+ this.update_expando(selected_row.uid, selected_row.expanded);
- if (mod_key == CONTROL_KEY || this.multiexpand)
- this.expand_all(selected_row);
- else
- this.expand(selected_row);
+ return false;
}
- // collapse
- else {
- if (!selected_row.expanded)
- return;
- if (mod_key == CONTROL_KEY || this.multiexpand)
- this.collapse_all(selected_row);
- else
- this.collapse(selected_row);
+ if (new_row) {
+ this.select_row(new_row.uid, mod_key, false);
+ this.scrollto(new_row.uid);
}
- this.update_expando(selected_row.uid, selected_row.expanded);
-
return false;
},