From 1484d5fb7f1d8eb7884d0a7bbe315a172e51082c Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Tue, 06 Oct 2015 05:14:43 -0400
Subject: [PATCH] Fix resetting search input events when the treelist is re-initialized, some CS improvements
---
program/js/treelist.js | 73 +++++++++++++++++-------------------
1 files changed, 34 insertions(+), 39 deletions(-)
diff --git a/program/js/treelist.js b/program/js/treelist.js
index 6850fdc..9194d7b 100644
--- a/program/js/treelist.js
+++ b/program/js/treelist.js
@@ -110,37 +110,43 @@
else
update_data();
- // register click handlers on list
- container.on('click', 'div.treetoggle', function(e){
- toggle(dom2id($(this).parent()));
- e.stopPropagation();
- });
-
- container.on('click', 'li', function(e) {
- // do not select record on checkbox/input click
- if ($(e.target).is('input'))
- return true;
-
- var node = p.selectable ? indexbyid[dom2id($(this))] : null;
- if (node && !node.virtual) {
- select(node.id);
+ container.attr('role', 'tree')
+ .on('focusin', function(e) {
+ // TODO: only accept focus on virtual nodes from keyboard events
+ has_focus = true;
+ })
+ .on('focusout', function(e) {
+ has_focus = false;
+ })
+ // register click handlers on list
+ .on('click', 'div.treetoggle', function(e) {
+ toggle(dom2id($(this).parent()));
e.stopPropagation();
- }
- });
+ })
+ .on('click', 'li', function(e) {
+ // do not select record on checkbox/input click
+ if ($(e.target).is('input'))
+ return true;
- // mute clicks on virtual folder links (they need tabindex="0" in order to be selectable by keyboard)
- container.on('mousedown', 'a', function(e) {
- var link = $(e.target), node = indexbyid[dom2id(link.closest('li'))];
- if (node && node.virtual && !link.attr('href')) {
- e.preventDefault();
- e.stopPropagation();
- return false;
- }
- });
+ var node = p.selectable ? indexbyid[dom2id($(this))] : null;
+ if (node && !node.virtual) {
+ select(node.id);
+ e.stopPropagation();
+ }
+ })
+ // mute clicks on virtual folder links (they need tabindex="0" in order to be selectable by keyboard)
+ .on('mousedown', 'a', function(e) {
+ var link = $(e.target), node = indexbyid[dom2id(link.closest('li'))];
+ if (node && node.virtual && !link.attr('href')) {
+ e.preventDefault();
+ e.stopPropagation();
+ return false;
+ }
+ });
// activate search function
if (p.searchbox) {
- searchfield = $(p.searchbox).on('keyup', function(e) {
+ searchfield = $(p.searchbox).off('keyup.treelist').on('keyup.treelist', function(e) {
var key = rcube_event.get_keycode(e),
mod = rcube_event.get_modifier(e);
@@ -169,24 +175,13 @@
}).attr('autocomplete', 'off');
// find the reset button for this search field
- searchfield.parent().find('a.reset').click(function(e) {
+ searchfield.parent().find('a.reset').off('click.treelist').on('click.treelist', function(e) {
reset_search();
return false;
})
}
- container.on('focusin', function(e){
- // TODO: only accept focus on virtual nodes from keyboard events
- has_focus = true;
- })
- .on('focusout', function(e){
- has_focus = false;
- });
-
- container.attr('role', 'tree');
-
- $(document.body)
- .bind('keydown', keypress);
+ $(document.body).on('keydown', keypress);
// catch focus when clicking the list container area
if (p.parent_focus) {
--
Gitblit v1.9.1