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

Side by Side Diff: chrome/browser/resources/md_bookmarks/command_manager.js

Issue 2940233003: MD Bookmarks: Lazily render dropdown menus (Closed)
Patch Set: Rebase Created 3 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview Element which shows context menus and handles keyboard 6 * @fileoverview Element which shows context menus and handles keyboard
7 * shortcuts. 7 * shortcuts.
8 */ 8 */
9 cr.define('bookmarks', function() { 9 cr.define('bookmarks', function() {
10 10
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 /** 99 /**
100 * Display the command context menu at (|x|, |y|) in window co-ordinates. 100 * Display the command context menu at (|x|, |y|) in window co-ordinates.
101 * Commands will execute on |items| if given, or on the currently selected 101 * Commands will execute on |items| if given, or on the currently selected
102 * items. 102 * items.
103 * @param {number} x 103 * @param {number} x
104 * @param {number} y 104 * @param {number} y
105 * @param {Set<string>=} items 105 * @param {Set<string>=} items
106 */ 106 */
107 openCommandMenuAtPosition: function(x, y, items) { 107 openCommandMenuAtPosition: function(x, y, items) {
108 this.menuIds_ = items || this.getState().selection.items; 108 this.menuIds_ = items || this.getState().selection.items;
109 /** @type {!CrActionMenuElement} */ (this.$.dropdown) 109 var dropdown =
110 .showAtPosition({top: y, left: x}); 110 /** @type {!CrActionMenuElement} */ (this.$.dropdown.get());
111 // Ensure that the menu is fully rendered before trying to position it.
112 Polymer.dom.flush();
113 dropdown.showAtPosition({top: y, left: x});
111 }, 114 },
112 115
113 /** 116 /**
114 * Display the command context menu positioned to cover the |target| 117 * Display the command context menu positioned to cover the |target|
115 * element. Commands will execute on the currently selected items. 118 * element. Commands will execute on the currently selected items.
116 * @param {!Element} target 119 * @param {!Element} target
117 */ 120 */
118 openCommandMenuAtElement: function(target) { 121 openCommandMenuAtElement: function(target) {
119 this.menuIds_ = this.getState().selection.items; 122 this.menuIds_ = this.getState().selection.items;
120 /** @type {!CrActionMenuElement} */ (this.$.dropdown).showAt(target); 123 var dropdown =
124 /** @type {!CrActionMenuElement} */ (this.$.dropdown.get());
125 // Ensure that the menu is fully rendered before trying to position it.
126 Polymer.dom.flush();
127 dropdown.showAt(target);
121 }, 128 },
122 129
123 closeCommandMenu: function() { 130 closeCommandMenu: function() {
124 this.menuIds_ = new Set(); 131 this.menuIds_ = new Set();
125 /** @type {!CrActionMenuElement} */ (this.$.dropdown).close(); 132 /** @type {!CrActionMenuElement} */ (this.$.dropdown.get()).close();
126 }, 133 },
127 134
128 //////////////////////////////////////////////////////////////////////////// 135 ////////////////////////////////////////////////////////////////////////////
129 // Command handlers: 136 // Command handlers:
130 137
131 /** 138 /**
132 * Determine if the |command| can be executed with the given |itemIds|. 139 * Determine if the |command| can be executed with the given |itemIds|.
133 * Commands which appear in the context menu should be implemented 140 * Commands which appear in the context menu should be implemented
134 * separately using `isCommandVisible_` and `isCommandEnabled_`. 141 * separately using `isCommandVisible_` and `isCommandEnabled_`.
135 * @param {Command} command 142 * @param {Command} command
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 }, 457 },
451 458
452 /** 459 /**
453 * Close the menu on mousedown so clicks can propagate to the underlying UI. 460 * Close the menu on mousedown so clicks can propagate to the underlying UI.
454 * This allows the user to right click the list while a context menu is 461 * This allows the user to right click the list while a context menu is
455 * showing and get another context menu. 462 * showing and get another context menu.
456 * @param {Event} e 463 * @param {Event} e
457 * @private 464 * @private
458 */ 465 */
459 onMenuMousedown_: function(e) { 466 onMenuMousedown_: function(e) {
460 if (e.path[0] != this.$.dropdown) 467 if (e.path[0] != this.$.dropdown.getIfExists())
461 return; 468 return;
462 469
463 this.closeCommandMenu(); 470 this.closeCommandMenu();
464 }, 471 },
465 472
466 /** 473 /**
467 * @param {Command} command 474 * @param {Command} command
468 * @return {string} 475 * @return {string}
469 * @private 476 * @private
470 */ 477 */
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 555
549 /** @return {!bookmarks.CommandManager} */ 556 /** @return {!bookmarks.CommandManager} */
550 CommandManager.getInstance = function() { 557 CommandManager.getInstance = function() {
551 return assert(CommandManager.instance_); 558 return assert(CommandManager.instance_);
552 }; 559 };
553 560
554 return { 561 return {
555 CommandManager: CommandManager, 562 CommandManager: CommandManager,
556 }; 563 };
557 }); 564 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698