From 3ebac0167bf20104fb7a2a55934765117760264c Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Mon, 18 Aug 2014 03:53:18 -0400
Subject: [PATCH] Only add zen-mode text labels in compose step

---
 program/js/list.js |   27 +++++++++++++++++++--------
 1 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/program/js/list.js b/program/js/list.js
index 5492c0a..65e09e8 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -61,12 +61,13 @@
   this.keyboard = false;
   this.toggleselect = false;
   this.aria_listbox = false;
+  this.parent_focus = true;
 
   this.drag_active = false;
   this.col_drag_active = false;
   this.column_fixed = null;
-  this.last_selected = 0;
-  this.shift_start = 0;
+  this.last_selected = null;
+  this.shift_start = null;
   this.focused = false;
   this.drag_mouse_start = null;
   this.dblclick_time = 500; // default value on MS Windows is 500
@@ -104,11 +105,13 @@
       $(this.list).attr('aria-multiselectable', 'true');
   }
 
+  var me = this;
+
   if (this.tbody) {
     this.rows = {};
     this.rowcount = 0;
 
-    var r, len, rows = this.tbody.childNodes, me = this;
+    var r, len, rows = this.tbody.childNodes;
 
     for (r=0, len=rows.length; r<len; r++) {
       this.rowcount += this.init_row(rows[r]) ? 1 : 0;
@@ -125,6 +128,10 @@
       $(this.list).attr('tabindex', '0')
         .on('focus', function(e){ me.focus(e); });
     }
+  }
+
+  if (this.parent_focus) {
+    this.list.parentNode.onclick = function(e) { me.focus(e); };
   }
 
   return this;
@@ -293,7 +300,7 @@
 
   this.rows = {};
   this.rowcount = 0;
-  this.last_selected = 0;
+  this.last_selected = null;
 
   if (sel)
     this.clear_selection();
@@ -939,13 +946,13 @@
     this.multi_selecting = true;
   }
 
-  if (this.last_selected != 0 && this.rows[this.last_selected]) {
+  if (this.last_selected && this.rows[this.last_selected]) {
     $(this.rows[this.last_selected].obj).removeClass('focused')
       .find(this.col_tagname()).eq(this.subject_col).removeAttr('tabindex');
   }
 
   // unselect if toggleselect is active and the same row was clicked again
-  if (this.toggleselect && in_selection_before) {
+  if (this.toggleselect && in_selection_before && !mod_key) {
     this.clear_selection();
   }
   // trigger event if selection changed
@@ -1171,7 +1178,7 @@
 
   if (num_select && !this.selection.length && !no_event) {
     this.triggerEvent('select');
-    this.last_selected = 0;
+    this.last_selected = null;
   }
 },
 
@@ -1499,7 +1506,11 @@
 
       $('> ' + self.col_tagname(), self.rows[uid].obj).each(function(n, cell) {
         if (self.subject_col < 0 || (self.subject_col >= 0 && self.subject_col == n)) {
-          var subject = $(cell).text();
+          // remove elements marked with "skip-on-drag" class
+          cell = $(cell).clone();
+          $(cell).find('.skip-on-drag').remove();
+
+          var subject = cell.text();
 
           if (subject) {
             // remove leading spaces

--
Gitblit v1.9.1