Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4290)

Unified Diff: chrome/browser/resources/file_manager/js/file_transfer_controller.js

Issue 10226001: Dropping files into the root list. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/file_manager/js/file_transfer_controller.js
diff --git a/chrome/browser/resources/file_manager/js/file_transfer_controller.js b/chrome/browser/resources/file_manager/js/file_transfer_controller.js
index 4cbb0f5e28e4ea0cf9aff54bd97dc38966449027..bb58bf8c1a6d00ecf3ad1f6d7f4d64c411424304 100644
--- a/chrome/browser/resources/file_manager/js/file_transfer_controller.js
+++ b/chrome/browser/resources/file_manager/js/file_transfer_controller.js
@@ -52,11 +52,12 @@ FileTransferController.prototype = {
* @param {cr.ui.List} list List itself and its directory items will could
* be drop target.
*/
- attachDropTarget: function(list) {
+ attachDropTarget: function(list, opt_onlyIntoDirectories) {
Vladislav Kaznacheev 2012/04/25 08:43:11 Please comment on the second parameter (here or in
SeRya 2012/04/25 10:15:16 Done.
list.addEventListener('dragover', this.onDragOver_.bind(this, list));
list.addEventListener('dragenter', this.onDragEnter_.bind(this, list));
list.addEventListener('dragleave', this.onDragLeave_.bind(this, list));
- list.addEventListener('drop', this.onDrop_.bind(this, list));
+ list.addEventListener('drop', this.onDrop_.bind(this, list,
+ !!opt_onlyIntoDirectories));
},
/**
@@ -192,13 +193,15 @@ FileTransferController.prototype = {
this.setDropTarget_(null);
},
- onDrop_: function(list, event) {
+ onDrop_: function(list, onlyIntoDirectories, event) {
console.log('drop: ', event.dataTransfer.dropEffect);
var item = list.getListItemAncestor(event.target);
var dropTarget = item && list.isItem(item) ?
- this.fileList_.item(item.listIndex) : null;
+ list.dataModel.item(item.listIndex) : null;
if (dropTarget && !dropTarget.isDirectory)
dropTarget = null;
+ if (onlyIntoDirectories && !dropTarget)
+ return;
if (!this.canPasteOrDrop_(event.dataTransfer, dropTarget))
return;
event.preventDefault();
@@ -214,7 +217,8 @@ FileTransferController.prototype = {
return;
if (listItem) {
- var entry = this.fileList_.item(listItem.listIndex);
+ var list = listItem.parentElement;
+ var entry = list.dataModel.item(listItem.listIndex);
if (entry.isDirectory &&
(!opt_dataTransfer ||
this.canPasteOrDrop_(opt_dataTransfer, entry))) {
@@ -308,8 +312,10 @@ FileTransferController.prototype = {
},
canPasteOrDrop_: function(dataTransfer, opt_entry) {
- if (this.readonly)
+ if (!opt_entry && this.readonly)
return false; // assure destination entry is in the current directory.
+ if (opt_entry && this.directoryModel_.isPathReadOnly(opt_entry.fullPath))
+ return;
Vladislav Kaznacheev 2012/04/25 08:43:11 return false?
SeRya 2012/04/25 10:15:16 Done.
if (!dataTransfer.types || dataTransfer.types.indexOf('fs/tag') == -1)
return false; // Unsupported type of content.

Powered by Google App Engine
This is Rietveld 408576698