From 48430d4481456425422163ed5a46e9e0fcd35ecd Mon Sep 17 00:00:00 2001 From: Pellaeon Lin Date: Wed, 4 Nov 2015 18:44:47 +0800 Subject: Handle case when breadcrumb and filelist item overlap and both receive a drop. Build breadcrumb over and out callback in filelist.js and pass them as options to utilize local selectors of filelist Re-enable td elements after drop to bread crumb Fix# drop handler still being called after enable, it seems that waiting for a short time before re-enabling solves the problem * Add explanations for setTimeout re-enable td.filename drop handler --- apps/files/js/filelist.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'apps/files/js/filelist.js') diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index bfcc77d8999..6229d3b2316 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -250,6 +250,12 @@ // if dropping on folders is allowed, then also allow on breadcrumbs if (this._folderDropOptions) { breadcrumbOptions.onDrop = _.bind(this._onDropOnBreadCrumb, this); + breadcrumbOptions.onOver = function() { + self.$el.find('td.filename.ui-droppable').droppable('disable'); + } + breadcrumbOptions.onOut = function() { + self.$el.find('td.filename.ui-droppable').droppable('enable'); + } } this.breadcrumb = new OCA.Files.BreadCrumb(breadcrumbOptions); @@ -758,6 +764,13 @@ } this.move(_.pluck(files, 'name'), targetPath); + + // re-enable td elements to be droppable + // sometimes the filename drop handler is still called after re-enable, + // it seems that waiting for a short time before re-enabling solves the problem + setTimeout(function() { + self.$el.find('td.filename.ui-droppable').droppable('enable'); + }, 10); }, /** -- cgit v1.2.3