From b08986f37521cbb6224d225f102f76636f22f1d7 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli <thomas@roundcube.net> Date: Wed, 14 May 2014 14:35:16 -0400 Subject: [PATCH] Small improvements to make treelist work in search-mode --- program/js/treelist.js | 28 +++++++++++++++++++++------- 1 files changed, 21 insertions(+), 7 deletions(-) diff --git a/program/js/treelist.js b/program/js/treelist.js index 1dd30a2..a99ee1e 100644 --- a/program/js/treelist.js +++ b/program/js/treelist.js @@ -83,6 +83,7 @@ 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 @@ /** * 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); } /** @@ -237,6 +246,11 @@ var li, parent_li, 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); @@ -341,7 +355,7 @@ if (sibling) { li.insertAfter(sibling); } - else if (first.id != myid) { + else if (first && first.id != myid) { li.insertBefore(first); } @@ -357,7 +371,7 @@ var node, li; if (node = indexbyid[id]) { - li = id2dom(id); + li = id2dom(id, true); li.remove(); node.deleted = true; @@ -610,11 +624,11 @@ /** * 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); } /** -- Gitblit v1.9.1