diff options
author | fukino <fukino@chromium.org> | 2016-02-04 01:20:59 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-04 09:21:52 +0000 |
commit | e8a62a620a31f2b7c4b15495586661eb540d6f2d (patch) | |
tree | 92b45d73061b658994603ebe717409eaf4cd345f /ui/file_manager | |
parent | 17be731c097793e928e8d146c0dc7c8611e856b9 (diff) | |
download | chromium_src-e8a62a620a31f2b7c4b15495586661eb540d6f2d.zip chromium_src-e8a62a620a31f2b7c4b15495586661eb540d6f2d.tar.gz chromium_src-e8a62a620a31f2b7c4b15495586661eb540d6f2d.tar.bz2 |
Files app: Consider parent directory's writability to enable rename command.
To disable/enable the rename command on context, we refer to the target entry's
writablility.
However, we should have checked the containing directory's writability.
BUG=536108
TEST=manually check the context menu on Recent, Offline, or Shared with me.
Review URL: https://codereview.chromium.org/1664143002
Cr-Commit-Position: refs/heads/master@{#373487}
Diffstat (limited to 'ui/file_manager')
-rw-r--r-- | ui/file_manager/file_manager/foreground/js/file_manager_commands.js | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/ui/file_manager/file_manager/foreground/js/file_manager_commands.js b/ui/file_manager/file_manager/foreground/js/file_manager_commands.js index 840d074..0440716 100644 --- a/ui/file_manager/file_manager/foreground/js/file_manager_commands.js +++ b/ui/file_manager/file_manager/foreground/js/file_manager_commands.js @@ -81,6 +81,30 @@ CommandUtil.getCommandEntries = function(element) { }; /** + * Extracts a directory which contains entries on which command event was + * dispatched. + * + * @param {EventTarget} element Element which is the command event's target. + * @param {DirectoryModel} directoryModel + * @return {DirectoryEntry|FakeEntry} The extracted parent entry. + */ +CommandUtil.getParentEntry = function(element, directoryModel) { + if (element instanceof DirectoryTree) { + if (!element.selectedItem) + return null; + var parentItem = element.selectedItem.parentItem; + return parentItem ? parentItem.entry : null; + } else if (element instanceof DirectoryItem || + element instanceof ShortcutItem) { + return element.parentItem ? element.parentItem.entry : null; + } else if (element instanceof cr.ui.List) { + return directoryModel ? directoryModel.getCurrentDirEntry() : null; + } else { + return null; + } +}; + +/** * @param {EventTarget} element * @param {!FileManager} fileManager * @return {VolumeInfo} @@ -892,9 +916,12 @@ CommandHandler.COMMANDS_['rename'] = /** @type {Command} */ ({ return; } - var locationInfo = fileManager.volumeManager.getLocationInfo(entries[0]); - event.canExecute = entries.length === 1 && !!locationInfo && - !locationInfo.isReadOnly; + var parentEntry = + CommandUtil.getParentEntry(event.target, fileManager.directoryModel); + var locationInfo = parentEntry ? + fileManager.volumeManager.getLocationInfo(parentEntry) : null; + event.canExecute = + entries.length === 1 && !!locationInfo && !locationInfo.isReadOnly; event.command.setHidden(false); } }); |