From 19577698176df4583cbaecba41c83371c3a368da Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Sat, 26 Jul 2014 04:16:02 -0400
Subject: [PATCH] Handle clicks on list parent element from the list widget

---
 program/js/list.js |    9 ++++++++-
 program/js/app.js  |   17 -----------------
 2 files changed, 8 insertions(+), 18 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index 28df384..e00479f 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -236,8 +236,6 @@
             return ref.command('sort', $(this).attr('rel'), this);
           });
 
-          this.gui_objects.messagelist.parentNode.onclick = function(e){ return ref.click_on_list(e || window.event); };
-
           this.enable_command('toggle_status', 'toggle_flag', 'sort', true);
           this.enable_command('set-listmode', this.env.threads && !this.is_multifolder_listing());
 
@@ -405,8 +403,6 @@
             .addEventListener('dragmove', function(e) { ref.drag_move(e); })
             .addEventListener('dragend', function(e) { ref.drag_end(e); })
             .init();
-
-          this.gui_objects.contactslist.parentNode.onmousedown = function(e){ return ref.click_on_list(e); };
 
           $(this.gui_objects.qsearchbox).focusin(function() { ref.contact_list.blur(); });
 
@@ -1713,19 +1709,6 @@
 
     return true;
   }
-
-  this.click_on_list = function(e)
-  {
-    if (this.gui_objects.qsearchbox)
-      this.gui_objects.qsearchbox.blur();
-
-    if (this.message_list)
-      this.message_list.focus(e);
-    else if (this.contact_list)
-      this.contact_list.focus(e);
-
-    return true;
-  };
 
   this.msglist_select = function(list)
   {
diff --git a/program/js/list.js b/program/js/list.js
index d10fa22..cdb1a46 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -61,6 +61,7 @@
   this.keyboard = false;
   this.toggleselect = false;
   this.aria_listbox = false;
+  this.parent_focus = true;
 
   this.drag_active = false;
   this.col_drag_active = false;
@@ -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;
@@ -127,6 +130,10 @@
     }
   }
 
+  if (this.parent_focus) {
+    this.list.parentNode.onclick = function(e) { me.focus(e); };
+  }
+
   return this;
 },
 

--
Gitblit v1.9.1