|
|
|
@ -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;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|