diff options
author | Aleksander Machniak <alec@alec.pl> | 2014-07-25 17:40:37 +0200 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2014-07-25 17:40:37 +0200 |
commit | 2c0d3e1dd0a3df01c8adea0de5f2826f0bcb9434 (patch) | |
tree | b31e1930c63e6f101ee5e8b946119f27fcb308bb | |
parent | 1e09be8a95779119a65c81045a65f62c6bff6c3b (diff) |
Fix drag-n-drop after folder move/create (#1489648)
-rw-r--r-- | program/js/app.js | 3 | ||||
-rw-r--r-- | program/js/treelist.js | 13 |
2 files changed, 14 insertions, 2 deletions
diff --git a/program/js/app.js b/program/js/app.js index a48962888..f25b80800 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -5891,6 +5891,9 @@ function rcube_webmail() if (!this.gui_objects.subscriptionlist) return false; + // disable drag-n-drop temporarily + this.subscription_list.draggable('destroy').droppable('destroy'); + var row, n, tmp, tmp_name, rowid, collator, pos, p, parent = '', folders = [], list = [], slist = [], list_element = $(this.gui_objects.subscriptionlist); diff --git a/program/js/treelist.js b/program/js/treelist.js index ab1363030..5071026f1 100644 --- a/program/js/treelist.js +++ b/program/js/treelist.js @@ -482,12 +482,14 @@ function rcube_treelist_widget(node, p) if (keep_content) { if (draggable_opts) { - draggable('destroy'); + if (ui_draggable) + draggable('destroy'); draggable(draggable_opts); } if (droppable_opts) { - droppable('destroy'); + if (ui_droppable) + droppable('destroy'); droppable(droppable_opts); } @@ -1061,6 +1063,9 @@ function rcube_treelist_widget(node, p) if (!opts) opts = {}; if ($.type(opts) == 'string') { + if (opts == 'destroy') { + ui_droppable = null; + } $('li:not(.virtual)', container).droppable(opts); return this; } @@ -1109,6 +1114,9 @@ function rcube_treelist_widget(node, p) if (!opts) opts = {}; if ($.type(opts) == 'string') { + if (opts == 'destroy') { + ui_draggable = null; + } $('li:not(.virtual)', container).draggable(opts); return this; } @@ -1121,6 +1129,7 @@ function rcube_treelist_widget(node, p) iframeFix: true, addClasses: false, cursorAt: {left: -20, top: 5}, + create: function(e, ui) { ui_draggable = ui; }, helper: function(e) { return $('<div>').attr('id', 'rcmdraglayer') .text($.trim($(e.target).first().text())); |