From 0fb8940d066fc6ecac5a8c97385380c152b69acd Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Wed, 30 Oct 2013 07:53:29 -0400 Subject: [PATCH] Merge pull request #151 from cmcnulty/new-key-navigation --- program/js/list.js | 34 +++++++++++++++++++++++----------- 1 files changed, 23 insertions(+), 11 deletions(-) diff --git a/program/js/list.js b/program/js/list.js index 0707172..0f63c6d 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -856,8 +856,14 @@ { var row = this.get_first_row(); if (row) { - this.select_row(row, mod_key, false); - this.scrollto(row); + if (mod_key) { + this.shift_select(row, mod_key); + this.triggerEvent('select'); + this.scrollto(row); + } + else { + this.select(row); + } } }, @@ -869,8 +875,14 @@ { var row = this.get_last_row(); if (row) { - this.select_row(row, mod_key, false); - this.scrollto(row); + if (mod_key) { + this.shift_select(row, mod_key); + this.triggerEvent('select'); + this.scrollto(row); + } + else { + this.select(row); + } } }, @@ -1124,10 +1136,13 @@ // Stop propagation so that the browser doesn't scroll rcube_event.cancel(e); return this.use_arrow_key(keyCode, mod_key); - case 61: - case 107: // Plus sign on a numeric keypad (fc11 + firefox 3.5.2) - case 109: case 32: + rcube_event.cancel(e); + return this.select_row(this.last_selected, mod_key, true); + 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); @@ -1196,11 +1211,8 @@ if (!selected_row || !selected_row.has_children) return; - if (keyCode == 32) - keyCode = selected_row.expanded ? 109 : 61; - // expand - if (keyCode == 61 || keyCode == 107) { + if (keyCode == 39 || keyCode == 107) { if (selected_row.expanded) return; -- Gitblit v1.9.1