summaryrefslogtreecommitdiff
path: root/program/js
diff options
context:
space:
mode:
authorThomas Bruederli <thomas@roundcube.net>2014-05-14 20:35:16 +0200
committerThomas Bruederli <thomas@roundcube.net>2014-05-14 20:35:16 +0200
commitb08986f37521cbb6224d225f102f76636f22f1d7 (patch)
treef9cb526e7b5f06caaf4aa75bdd16c678aa83f124 /program/js
parenta340b300888ad7a8a421a3cc32d0abf4706a42e1 (diff)
Small improvements to make treelist work in search-mode
Diffstat (limited to 'program/js')
-rw-r--r--program/js/treelist.js28
1 files changed, 21 insertions, 7 deletions
diff --git a/program/js/treelist.js b/program/js/treelist.js
index 1dd30a20e..a99ee1e62 100644
--- a/program/js/treelist.js
+++ b/program/js/treelist.js
@@ -83,6 +83,7 @@ function rcube_treelist_widget(node, p)
this.insert = insert;
this.remove = remove;
this.get_item = get_item;
+ this.get_node = get_node;
this.get_selection = get_selection;
/////// startup code (constructor)
@@ -224,9 +225,17 @@ function rcube_treelist_widget(node, p)
/**
* Return the DOM element of the list item with the given ID
*/
- function get_item(id)
+ function get_node(id)
{
- return id2dom(id).get(0);
+ return indexbyid[id];
+ }
+
+ /**
+ * Return the DOM element of the list item with the given ID
+ */
+ function get_item(id, real)
+ {
+ return id2dom(id, real).get(0);
}
/**
@@ -238,6 +247,11 @@ function rcube_treelist_widget(node, p)
parent_node = parent_id ? indexbyid[parent_id] : null
search_ = search_active;
+ // ignore, already exists
+ if (indexbyid[node.id]) {
+ return;
+ }
+
// apply saved state
state = get_state(node.id, node.collapsed);
if (state !== undefined) {
@@ -341,7 +355,7 @@ function rcube_treelist_widget(node, p)
if (sibling) {
li.insertAfter(sibling);
}
- else if (first.id != myid) {
+ else if (first && first.id != myid) {
li.insertBefore(first);
}
@@ -357,7 +371,7 @@ function rcube_treelist_widget(node, p)
var node, li;
if (node = indexbyid[id]) {
- li = id2dom(id);
+ li = id2dom(id, true);
li.remove();
node.deleted = true;
@@ -610,11 +624,11 @@ function rcube_treelist_widget(node, p)
/**
* Get the <li> element for the given node ID
*/
- function id2dom(id)
+ function id2dom(id, real)
{
var domid = p.id_encode ? p.id_encode(id) : id,
- suffix = search_active ? '--xsR' : '';
- return $('#' + p.id_prefix + domid + suffix);
+ suffix = search_active && !real ? '--xsR' : '';
+ return $('#' + p.id_prefix + domid + suffix, container);
}
/**