| Index: chrome/browser/resources/md_bookmarks/command_manager.js
|
| diff --git a/chrome/browser/resources/md_bookmarks/command_manager.js b/chrome/browser/resources/md_bookmarks/command_manager.js
|
| index fefe8a6628c8c4562e768983afc2fad6ed5cb831..020f92b183db528e3abccaad7f823473e91ebffb 100644
|
| --- a/chrome/browser/resources/md_bookmarks/command_manager.js
|
| +++ b/chrome/browser/resources/md_bookmarks/command_manager.js
|
| @@ -23,6 +23,7 @@ cr.define('bookmarks', function() {
|
| return [
|
| Command.EDIT,
|
| Command.COPY_URL,
|
| + Command.SHOW_IN_FOLDER,
|
| Command.DELETE,
|
| // <hr>
|
| Command.OPEN_NEW_TAB,
|
| @@ -74,6 +75,14 @@ cr.define('bookmarks', function() {
|
| this.boundOnKeydown_ = this.onKeydown_.bind(this);
|
| document.addEventListener('keydown', this.boundOnKeydown_);
|
|
|
| + /**
|
| + * Indicates where the context menu was opened from. Will be NONE if
|
| + * menu is not open, indicating that commands are from keyboard shortcuts
|
| + * or elsewhere in the UI.
|
| + * @private {MenuSource}
|
| + */
|
| + this.menuSource_ = MenuSource.NONE;
|
| +
|
| /** @private {Object<Command, cr.ui.KeyboardShortcutList>} */
|
| this.shortcuts_ = {};
|
|
|
| @@ -108,9 +117,11 @@ cr.define('bookmarks', function() {
|
| * items.
|
| * @param {number} x
|
| * @param {number} y
|
| + * @param {MenuSource} source
|
| * @param {Set<string>=} items
|
| */
|
| - openCommandMenuAtPosition: function(x, y, items) {
|
| + openCommandMenuAtPosition: function(x, y, source, items) {
|
| + this.menuSource_ = source;
|
| this.menuIds_ = items || this.getState().selection.items;
|
|
|
| var dropdown =
|
| @@ -127,8 +138,10 @@ cr.define('bookmarks', function() {
|
| * Display the command context menu positioned to cover the |target|
|
| * element. Commands will execute on the currently selected items.
|
| * @param {!Element} target
|
| + * @param {MenuSource} source
|
| */
|
| - openCommandMenuAtElement: function(target) {
|
| + openCommandMenuAtElement: function(target, source) {
|
| + this.menuSource_ = source;
|
| this.menuIds_ = this.getState().selection.items;
|
|
|
| var dropdown =
|
| @@ -143,6 +156,7 @@ cr.define('bookmarks', function() {
|
|
|
| closeCommandMenu: function() {
|
| this.menuIds_ = new Set();
|
| + this.menuSource_ = MenuSource.NONE;
|
| /** @type {!CrActionMenuElement} */ (this.$.dropdown.get()).close();
|
| },
|
|
|
| @@ -198,6 +212,12 @@ cr.define('bookmarks', function() {
|
| return this.isSingleBookmark_(itemIds);
|
| case Command.DELETE:
|
| return itemIds.size > 0 && this.globalCanEdit_;
|
| + case Command.SHOW_IN_FOLDER:
|
| + return this.menuSource_ == MenuSource.LIST && itemIds.size == 1 &&
|
| + this.getState().search.term != '' &&
|
| + !this.containsMatchingNode_(itemIds, function(node) {
|
| + return !node.parentId || node.parentId == ROOT_NODE_ID;
|
| + });
|
| case Command.OPEN_NEW_TAB:
|
| case Command.OPEN_NEW_WINDOW:
|
| case Command.OPEN_INCOGNITO:
|
| @@ -262,6 +282,11 @@ cr.define('bookmarks', function() {
|
| labelPromise, state.nodes[idList[0]].title, false);
|
| }.bind(this));
|
| break;
|
| + case Command.SHOW_IN_FOLDER:
|
| + var id = Array.from(itemIds)[0];
|
| + this.dispatch(bookmarks.actions.selectFolder(
|
| + assert(state.nodes[id].parentId), state.nodes));
|
| + break;
|
| case Command.DELETE:
|
| var idList = Array.from(this.minimizeDeletionSet_(itemIds));
|
| var title = state.nodes[idList[0]].title;
|
| @@ -502,6 +527,9 @@ cr.define('bookmarks', function() {
|
| case Command.DELETE:
|
| label = 'menuDelete';
|
| break;
|
| + case Command.SHOW_IN_FOLDER:
|
| + label = 'menuShowInFolder';
|
| + break;
|
| case Command.OPEN_NEW_TAB:
|
| label = multipleNodes ? 'menuOpenAllNewTab' : 'menuOpenNewTab';
|
| break;
|
| @@ -587,9 +615,9 @@ cr.define('bookmarks', function() {
|
| */
|
| onOpenItemMenu_: function(e) {
|
| if (e.detail.targetElement) {
|
| - this.openCommandMenuAtElement(e.detail.targetElement);
|
| + this.openCommandMenuAtElement(e.detail.targetElement, e.detail.source);
|
| } else {
|
| - this.openCommandMenuAtPosition(e.detail.x, e.detail.y);
|
| + this.openCommandMenuAtPosition(e.detail.x, e.detail.y, e.detail.source);
|
| }
|
| },
|
|
|
|
|