diff --git a/www/drive/main.js b/www/drive/main.js index c4aa73d63..1b6dd4a79 100644 --- a/www/drive/main.js +++ b/www/drive/main.js @@ -236,6 +236,10 @@ define([ } }; + var findDataHolder = function ($el) { + return $el.is('.element-row') ? $el : $el.closest('.element-row'); + }; + var removeSelected = function () { $iframe.find('.selected').removeClass("selected"); var $container = $driveToolbar.find('#contextButtonsContainer'); @@ -243,8 +247,6 @@ define([ $container.html(''); }; var removeInput = function () { - $iframe.find('li > span:hidden').removeAttr('style'); - $iframe.find('li > input').remove(); $iframe.find('.element-row > input').remove(); $iframe.find('.element-row > span:hidden').removeAttr('style'); }; @@ -376,7 +378,7 @@ define([ var updateContextButton = function () { var $li = $content.find('.selected'); if ($li.length !== 1) { - $li = $tree.find('.element.active').closest('li'); + $li = findDataHolder($tree.find('.element.active')); } var $button = $driveToolbar.find('#contextButton'); if ($button.length) { // mobile @@ -437,10 +439,7 @@ define([ if (!e || !e.ctrlKey) { removeSelected(); } - if (!$element.is('li')) { - $element = $element.closest('li'); - } - if ($element.find('>.element-row').length) { $element = $element.find('>.element-row'); } + $element = findDataHolder($element); if (!$element.length) { log(Messages.fm_selectError); return; @@ -459,8 +458,7 @@ define([ module.hideMenu(); e.stopPropagation(); - var $element = $(e.target).closest('li'); - if ($element.find('>.element-row').length) { $element = $element.find('>.element-row'); } + var $element = findDataHolder($(e.target)); if (!$element.length) { logError("Unable to locate the .element tag", e.target); $menu.hide(); @@ -514,7 +512,7 @@ define([ }; var openTrashContextMenu = function (e) { - var path = $(e.target).closest('li').data('path'); + var path = findDataHolder($(e.target)).data('path'); if (!path) { return; } $trashContextMenu.find('li').show(); openContextMenu(e, $trashContextMenu); @@ -608,8 +606,7 @@ define([ // The data transferred is a stringified JSON containing the path of the dragged element var onDrag = function (ev, path) { var paths = []; - var $element = $(ev.target).closest('li'); - if ($element.find('>.element-row').length) { $element = $element.find('>.element-row'); } + var $element = findDataHolder($(ev.target)); if ($element.hasClass('selected')) { var $selected = $iframe.find('.selected'); $selected.each(function (idx, elmt) { @@ -665,7 +662,8 @@ define([ } }); - var newPath = $(ev.target).data('path') || $(ev.target).parent('.element-row').data('path') || $(ev.target).parent('li').data('path'); + var $el = findDataHolder($(ev.target)); + var newPath = $el.data('path'); if (!newPath) { return; } if (movedPaths && movedPaths.length) { moveElements(movedPaths, newPath, null, refresh); @@ -796,7 +794,8 @@ define([ $icon = filesOp.isFolderEmpty(root[key]) ? $folderEmptyIcon.clone() : $folderIcon.clone(); } var $element = $('