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