diff options
Diffstat (limited to 'program/js/treelist.js')
-rw-r--r-- | program/js/treelist.js | 11 |
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); |