diff --git a/src/views/Drive.vue b/src/views/Drive.vue index d0397030..d5b8fedf 100644 --- a/src/views/Drive.vue +++ b/src/views/Drive.vue @@ -25,7 +25,7 @@ 1) - return false; - var target = this.selectedFiles.length == 1 ? this.selectedFiles[0] : this.currentDir; - - if (target == null) { - return false; - } - - if (this.clipboard.fileTreeNode != null && this.clipboard.fileTreeNode.samePointer(target)) { - return false; - } - - return target.isWritable() && target.isDirectory(); + return this.isPasteToFolderAvailable(); }, }, @@ -1313,7 +1303,6 @@ module.exports = { that.openFile(); } else { that.selectedFiles = []; - that.multiSelectTargetFolder = null; } if (callback != null) { callback(); @@ -2285,6 +2274,35 @@ module.exports = { } }); } + }, + isPasteToFolderAvailable() { + if (this.currentDir == null) + return false; + + if (typeof (this.clipboard) == undefined || this.clipboard == null || this.clipboard.op == null || typeof (this.clipboard.op) == "undefined") + return false; + + if (this.selectedFiles.length > 1) + return false; + var target = this.selectedFiles.length == 1 ? this.selectedFiles[0] : this.currentDir; + + if (target == null) { + return false; + } + + if (this.clipboard.fileTreeNode != null && this.clipboard.fileTreeNode.samePointer(target)) { + return false; + } + + return target.isWritable() && target.isDirectory(); + }, + pasteToFolder(e) { + var target = this.multiSelectTargetFolder; + if (target == null) { + this.paste(e); + } else { + this.pasteMultiSelect(e); + } }, pasteMultiSelect(e, retrying) { var target = this.multiSelectTargetFolder;