summaryrefslogtreecommitdiff
path: root/program/js/treelist.js
diff options
context:
space:
mode:
Diffstat (limited to 'program/js/treelist.js')
-rw-r--r--program/js/treelist.js11
1 files changed, 8 insertions, 3 deletions
diff --git a/program/js/treelist.js b/program/js/treelist.js
index c034f77b8..6f7bfbef7 100644
--- a/program/js/treelist.js
+++ b/program/js/treelist.js
@@ -248,6 +248,11 @@ function rcube_treelist_widget(node, p)
*/
function select(id)
{
+ // allow subscribes to prevent selection change
+ if (me.triggerEvent('beforeselect', indexbyid[id]) === false) {
+ return;
+ }
+
if (selection) {
id2dom(selection, true).removeClass('selected').removeAttr('aria-selected');
if (search_active)
@@ -911,9 +916,9 @@ function rcube_treelist_widget(node, p)
* When dragging starts, compute absolute bounding boxes of the list and it's items
* for faster comparisons while mouse is moving
*/
- function drag_start()
+ function drag_start(force)
{
- if (drag_active)
+ if (!force && drag_active)
return;
drag_active = true;
@@ -1054,7 +1059,7 @@ function rcube_treelist_widget(node, p)
autoexpand_item = id;
autoexpand_timer = setTimeout(function() {
expand(autoexpand_item);
- drag_start(); // re-calculate item coords
+ drag_start(true); // re-calculate item coords
autoexpand_item = null;
if (ui_droppable)
$.ui.ddmanager.prepareOffsets($.ui.ddmanager.current, null);