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

Unified Diff: third_party/WebKit/Source/devtools/front_end/ui/SoftContextMenu.js

Issue 2466123002: DevTools: reformat front-end code to match chromium style. (Closed)
Patch Set: all done Created 4 years, 1 month 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: third_party/WebKit/Source/devtools/front_end/ui/SoftContextMenu.js
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/SoftContextMenu.js b/third_party/WebKit/Source/devtools/front_end/ui/SoftContextMenu.js
index ae049454f9fb10959546388a43c41567f3af8918..fb06813fbc63d01fd9b50cc82bed63eb0c95eb56 100644
--- a/third_party/WebKit/Source/devtools/front_end/ui/SoftContextMenu.js
+++ b/third_party/WebKit/Source/devtools/front_end/ui/SoftContextMenu.js
@@ -22,379 +22,372 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-
/**
- * @constructor
- * @param {!Array.<!InspectorFrontendHostAPI.ContextMenuDescriptor>} items
- * @param {function(string)} itemSelectedCallback
- * @param {!WebInspector.SoftContextMenu=} parentMenu
+ * @unrestricted
*/
-WebInspector.SoftContextMenu = function(items, itemSelectedCallback, parentMenu)
-{
+WebInspector.SoftContextMenu = class {
+ /**
+ * @param {!Array.<!InspectorFrontendHostAPI.ContextMenuDescriptor>} items
+ * @param {function(string)} itemSelectedCallback
+ * @param {!WebInspector.SoftContextMenu=} parentMenu
+ */
+ constructor(items, itemSelectedCallback, parentMenu) {
this._items = items;
this._itemSelectedCallback = itemSelectedCallback;
this._parentMenu = parentMenu;
-};
-
-WebInspector.SoftContextMenu.prototype = {
- /**
- * @param {!Document} document
- * @param {number} x
- * @param {number} y
- */
- show: function(document, x, y)
- {
- if (!this._items.length)
- return;
-
- this._document = document;
- this._x = x;
- this._y = y;
- this._time = new Date().getTime();
-
- // Create context menu.
- this.element = createElementWithClass("div", "soft-context-menu");
- var root = WebInspector.createShadowRootWithCoreStyles(this.element, "ui/softContextMenu.css");
- this._contextMenuElement = root.createChild("div");
- this.element.style.top = y + "px";
- var subMenuOverlap = 3;
- this.element.style.left = (this._parentMenu ? x - subMenuOverlap : x) + "px";
-
- this._contextMenuElement.tabIndex = 0;
- this._contextMenuElement.addEventListener("mouseup", (e) => e.consume(), false);
- this._contextMenuElement.addEventListener("keydown", this._menuKeyDown.bind(this), false);
-
- for (var i = 0; i < this._items.length; ++i)
- this._contextMenuElement.appendChild(this._createMenuItem(this._items[i]));
-
- // Install glass pane capturing events.
- if (!this._parentMenu) {
- this._glassPaneElement = createElementWithClass("div", "soft-context-menu-glass-pane fill");
- this._glassPaneElement.tabIndex = 0;
- this._glassPaneElement.style.zIndex = "20000";
- this._glassPaneElement.addEventListener("mouseup", this._glassPaneMouseUp.bind(this), false);
- this._glassPaneElement.appendChild(this.element);
- document.body.appendChild(this._glassPaneElement);
- this._discardMenuOnResizeListener = this._discardMenu.bind(this, true);
- document.defaultView.addEventListener("resize", this._discardMenuOnResizeListener, false);
- } else {
- this._parentMenu._parentGlassPaneElement().appendChild(this.element);
- }
-
- // Re-position menu in case it does not fit.
- if (document.body.offsetWidth < this.element.offsetLeft + this.element.offsetWidth) {
- this.element.style.left = Math.max(WebInspector.Dialog.modalHostView().element.totalOffsetLeft(), this._parentMenu
- ? this._parentMenu.element.offsetLeft - this.element.offsetWidth + subMenuOverlap
- : document.body.offsetWidth - this.element.offsetWidth) + "px";
- }
-
- // Move submenus upwards if it does not fit.
- if (this._parentMenu && document.body.offsetHeight < this.element.offsetTop + this.element.offsetHeight) {
- y = Math.max(WebInspector.Dialog.modalHostView().element.totalOffsetTop(), document.body.offsetHeight - this.element.offsetHeight);
- this.element.style.top = y + "px";
- }
-
- var maxHeight = WebInspector.Dialog.modalHostView().element.offsetHeight;
- maxHeight -= y - WebInspector.Dialog.modalHostView().element.totalOffsetTop();
- this.element.style.maxHeight = maxHeight + "px";
-
- this._focus();
- },
-
- discard: function()
- {
- this._discardMenu(true);
- },
-
- _parentGlassPaneElement: function()
- {
- if (this._glassPaneElement)
- return this._glassPaneElement;
- if (this._parentMenu)
- return this._parentMenu._parentGlassPaneElement();
- return null;
- },
-
- _createMenuItem: function(item)
- {
- if (item.type === "separator")
- return this._createSeparator();
-
- if (item.type === "subMenu")
- return this._createSubMenu(item);
-
- var menuItemElement = createElementWithClass("div", "soft-context-menu-item");
- var checkMarkElement = menuItemElement.createChild("div", "checkmark");
- if (!item.checked)
- checkMarkElement.style.opacity = "0";
-
- if (item.element) {
- var wrapper = menuItemElement.createChild("div", "soft-context-menu-custom-item");
- wrapper.appendChild(item.element);
- menuItemElement._isCustom = true;
- return menuItemElement;
- }
-
- if (!item.enabled)
- menuItemElement.classList.add("soft-context-menu-disabled");
- menuItemElement.createTextChild(item.label);
- menuItemElement.createChild("span", "soft-context-menu-shortcut").textContent = item.shortcut;
-
- menuItemElement.addEventListener("mousedown", this._menuItemMouseDown.bind(this), false);
- menuItemElement.addEventListener("mouseup", this._menuItemMouseUp.bind(this), false);
-
- // Manually manage hover highlight since :hover does not work in case of click-and-hold menu invocation.
- menuItemElement.addEventListener("mouseover", this._menuItemMouseOver.bind(this), false);
- menuItemElement.addEventListener("mouseleave", this._menuItemMouseLeave.bind(this), false);
-
- menuItemElement._actionId = item.id;
- return menuItemElement;
- },
-
- _createSubMenu: function(item)
- {
- var menuItemElement = createElementWithClass("div", "soft-context-menu-item");
- menuItemElement._subItems = item.subItems;
-
- // Occupy the same space on the left in all items.
- var checkMarkElement = menuItemElement.createChild("span", "soft-context-menu-item-checkmark checkmark");
- checkMarkElement.textContent = "\u2713 "; // Checkmark Unicode symbol
- checkMarkElement.style.opacity = "0";
-
- menuItemElement.createTextChild(item.label);
-
- var subMenuArrowElement = menuItemElement.createChild("span", "soft-context-menu-item-submenu-arrow");
- subMenuArrowElement.textContent = "\u25B6"; // BLACK RIGHT-POINTING TRIANGLE
-
- menuItemElement.addEventListener("mousedown", this._menuItemMouseDown.bind(this), false);
- menuItemElement.addEventListener("mouseup", this._menuItemMouseUp.bind(this), false);
+ }
+
+ /**
+ * @param {!Document} document
+ * @param {number} x
+ * @param {number} y
+ */
+ show(document, x, y) {
+ if (!this._items.length)
+ return;
+
+ this._document = document;
+ this._x = x;
+ this._y = y;
+ this._time = new Date().getTime();
+
+ // Create context menu.
+ this.element = createElementWithClass('div', 'soft-context-menu');
+ var root = WebInspector.createShadowRootWithCoreStyles(this.element, 'ui/softContextMenu.css');
+ this._contextMenuElement = root.createChild('div');
+ this.element.style.top = y + 'px';
+ var subMenuOverlap = 3;
+ this.element.style.left = (this._parentMenu ? x - subMenuOverlap : x) + 'px';
+
+ this._contextMenuElement.tabIndex = 0;
+ this._contextMenuElement.addEventListener('mouseup', (e) => e.consume(), false);
+ this._contextMenuElement.addEventListener('keydown', this._menuKeyDown.bind(this), false);
+
+ for (var i = 0; i < this._items.length; ++i)
+ this._contextMenuElement.appendChild(this._createMenuItem(this._items[i]));
+
+ // Install glass pane capturing events.
+ if (!this._parentMenu) {
+ this._glassPaneElement = createElementWithClass('div', 'soft-context-menu-glass-pane fill');
+ this._glassPaneElement.tabIndex = 0;
+ this._glassPaneElement.style.zIndex = '20000';
+ this._glassPaneElement.addEventListener('mouseup', this._glassPaneMouseUp.bind(this), false);
+ this._glassPaneElement.appendChild(this.element);
+ document.body.appendChild(this._glassPaneElement);
+ this._discardMenuOnResizeListener = this._discardMenu.bind(this, true);
+ document.defaultView.addEventListener('resize', this._discardMenuOnResizeListener, false);
+ } else {
+ this._parentMenu._parentGlassPaneElement().appendChild(this.element);
+ }
- // Manually manage hover highlight since :hover does not work in case of click-and-hold menu invocation.
- menuItemElement.addEventListener("mouseover", this._menuItemMouseOver.bind(this), false);
- menuItemElement.addEventListener("mouseleave", this._menuItemMouseLeave.bind(this), false);
+ // Re-position menu in case it does not fit.
+ if (document.body.offsetWidth < this.element.offsetLeft + this.element.offsetWidth) {
+ this.element.style.left =
+ Math.max(
+ WebInspector.Dialog.modalHostView().element.totalOffsetLeft(), this._parentMenu ?
+ this._parentMenu.element.offsetLeft - this.element.offsetWidth + subMenuOverlap :
+ document.body.offsetWidth - this.element.offsetWidth) +
+ 'px';
+ }
- return menuItemElement;
- },
+ // Move submenus upwards if it does not fit.
+ if (this._parentMenu && document.body.offsetHeight < this.element.offsetTop + this.element.offsetHeight) {
+ y = Math.max(
+ WebInspector.Dialog.modalHostView().element.totalOffsetTop(),
+ document.body.offsetHeight - this.element.offsetHeight);
+ this.element.style.top = y + 'px';
+ }
- _createSeparator: function()
- {
- var separatorElement = createElementWithClass("div", "soft-context-menu-separator");
- separatorElement._isSeparator = true;
- separatorElement.createChild("div", "separator-line");
- return separatorElement;
- },
+ var maxHeight = WebInspector.Dialog.modalHostView().element.offsetHeight;
+ maxHeight -= y - WebInspector.Dialog.modalHostView().element.totalOffsetTop();
+ this.element.style.maxHeight = maxHeight + 'px';
+
+ this._focus();
+ }
+
+ discard() {
+ this._discardMenu(true);
+ }
+
+ _parentGlassPaneElement() {
+ if (this._glassPaneElement)
+ return this._glassPaneElement;
+ if (this._parentMenu)
+ return this._parentMenu._parentGlassPaneElement();
+ return null;
+ }
+
+ _createMenuItem(item) {
+ if (item.type === 'separator')
+ return this._createSeparator();
+
+ if (item.type === 'subMenu')
+ return this._createSubMenu(item);
+
+ var menuItemElement = createElementWithClass('div', 'soft-context-menu-item');
+ var checkMarkElement = menuItemElement.createChild('div', 'checkmark');
+ if (!item.checked)
+ checkMarkElement.style.opacity = '0';
+
+ if (item.element) {
+ var wrapper = menuItemElement.createChild('div', 'soft-context-menu-custom-item');
+ wrapper.appendChild(item.element);
+ menuItemElement._isCustom = true;
+ return menuItemElement;
+ }
- _menuItemMouseDown: function(event)
- {
- // Do not let separator's mouse down hit menu's handler - we need to receive mouse up!
- event.consume(true);
- },
-
- _menuItemMouseUp: function(event)
- {
- this._triggerAction(event.target, event);
- event.consume();
- },
-
- _focus: function()
- {
- this._contextMenuElement.focus();
- },
-
- _triggerAction: function(menuItemElement, event)
- {
- if (!menuItemElement._subItems) {
- this._discardMenu(true, event);
- if (typeof menuItemElement._actionId !== "undefined") {
- this._itemSelectedCallback(menuItemElement._actionId);
- delete menuItemElement._actionId;
- }
- return;
- }
+ if (!item.enabled)
+ menuItemElement.classList.add('soft-context-menu-disabled');
+ menuItemElement.createTextChild(item.label);
+ menuItemElement.createChild('span', 'soft-context-menu-shortcut').textContent = item.shortcut;
+
+ menuItemElement.addEventListener('mousedown', this._menuItemMouseDown.bind(this), false);
+ menuItemElement.addEventListener('mouseup', this._menuItemMouseUp.bind(this), false);
+
+ // Manually manage hover highlight since :hover does not work in case of click-and-hold menu invocation.
+ menuItemElement.addEventListener('mouseover', this._menuItemMouseOver.bind(this), false);
+ menuItemElement.addEventListener('mouseleave', this._menuItemMouseLeave.bind(this), false);
+
+ menuItemElement._actionId = item.id;
+ return menuItemElement;
+ }
+
+ _createSubMenu(item) {
+ var menuItemElement = createElementWithClass('div', 'soft-context-menu-item');
+ menuItemElement._subItems = item.subItems;
+
+ // Occupy the same space on the left in all items.
+ var checkMarkElement = menuItemElement.createChild('span', 'soft-context-menu-item-checkmark checkmark');
+ checkMarkElement.textContent = '\u2713 '; // Checkmark Unicode symbol
+ checkMarkElement.style.opacity = '0';
+
+ menuItemElement.createTextChild(item.label);
+
+ var subMenuArrowElement = menuItemElement.createChild('span', 'soft-context-menu-item-submenu-arrow');
+ subMenuArrowElement.textContent = '\u25B6'; // BLACK RIGHT-POINTING TRIANGLE
+
+ menuItemElement.addEventListener('mousedown', this._menuItemMouseDown.bind(this), false);
+ menuItemElement.addEventListener('mouseup', this._menuItemMouseUp.bind(this), false);
+
+ // Manually manage hover highlight since :hover does not work in case of click-and-hold menu invocation.
+ menuItemElement.addEventListener('mouseover', this._menuItemMouseOver.bind(this), false);
+ menuItemElement.addEventListener('mouseleave', this._menuItemMouseLeave.bind(this), false);
+
+ return menuItemElement;
+ }
+
+ _createSeparator() {
+ var separatorElement = createElementWithClass('div', 'soft-context-menu-separator');
+ separatorElement._isSeparator = true;
+ separatorElement.createChild('div', 'separator-line');
+ return separatorElement;
+ }
+
+ _menuItemMouseDown(event) {
+ // Do not let separator's mouse down hit menu's handler - we need to receive mouse up!
+ event.consume(true);
+ }
+
+ _menuItemMouseUp(event) {
+ this._triggerAction(event.target, event);
+ event.consume();
+ }
+
+ _focus() {
+ this._contextMenuElement.focus();
+ }
+
+ _triggerAction(menuItemElement, event) {
+ if (!menuItemElement._subItems) {
+ this._discardMenu(true, event);
+ if (typeof menuItemElement._actionId !== 'undefined') {
+ this._itemSelectedCallback(menuItemElement._actionId);
+ delete menuItemElement._actionId;
+ }
+ return;
+ }
- this._showSubMenu(menuItemElement);
- event.consume();
- },
+ this._showSubMenu(menuItemElement);
+ event.consume();
+ }
- _showSubMenu: function(menuItemElement)
- {
- if (menuItemElement._subMenuTimer) {
- clearTimeout(menuItemElement._subMenuTimer);
- delete menuItemElement._subMenuTimer;
- }
- if (this._subMenu)
- return;
-
- this._subMenu = new WebInspector.SoftContextMenu(menuItemElement._subItems, this._itemSelectedCallback, this);
- var topPadding = 4;
- this._subMenu.show(this._document, menuItemElement.totalOffsetLeft() + menuItemElement.offsetWidth, menuItemElement.totalOffsetTop() - 1 - topPadding);
- },
-
- _hideSubMenu: function()
- {
- if (!this._subMenu)
- return;
- this._subMenu._discardSubMenus();
- this._focus();
- },
-
- _menuItemMouseOver: function(event)
- {
- this._highlightMenuItem(event.target, true);
- },
-
- _menuItemMouseLeave: function(event)
- {
- if (!this._subMenu || !event.relatedTarget) {
- this._highlightMenuItem(null, true);
- return;
- }
+ _showSubMenu(menuItemElement) {
+ if (menuItemElement._subMenuTimer) {
+ clearTimeout(menuItemElement._subMenuTimer);
+ delete menuItemElement._subMenuTimer;
+ }
+ if (this._subMenu)
+ return;
+
+ this._subMenu = new WebInspector.SoftContextMenu(menuItemElement._subItems, this._itemSelectedCallback, this);
+ var topPadding = 4;
+ this._subMenu.show(
+ this._document, menuItemElement.totalOffsetLeft() + menuItemElement.offsetWidth,
+ menuItemElement.totalOffsetTop() - 1 - topPadding);
+ }
+
+ _hideSubMenu() {
+ if (!this._subMenu)
+ return;
+ this._subMenu._discardSubMenus();
+ this._focus();
+ }
+
+ _menuItemMouseOver(event) {
+ this._highlightMenuItem(event.target, true);
+ }
+
+ _menuItemMouseLeave(event) {
+ if (!this._subMenu || !event.relatedTarget) {
+ this._highlightMenuItem(null, true);
+ return;
+ }
- var relatedTarget = event.relatedTarget;
- if (relatedTarget.classList.contains("soft-context-menu-glass-pane"))
- this._highlightMenuItem(null, true);
- },
-
- /**
- * @param {?Element} menuItemElement
- * @param {boolean} scheduleSubMenu
- */
- _highlightMenuItem: function(menuItemElement, scheduleSubMenu)
- {
- if (this._highlightedMenuItemElement === menuItemElement)
- return;
-
- this._hideSubMenu();
- if (this._highlightedMenuItemElement) {
- this._highlightedMenuItemElement.classList.remove("soft-context-menu-item-mouse-over");
- if (this._highlightedMenuItemElement._subItems && this._highlightedMenuItemElement._subMenuTimer) {
- clearTimeout(this._highlightedMenuItemElement._subMenuTimer);
- delete this._highlightedMenuItemElement._subMenuTimer;
- }
+ var relatedTarget = event.relatedTarget;
+ if (relatedTarget.classList.contains('soft-context-menu-glass-pane'))
+ this._highlightMenuItem(null, true);
+ }
+
+ /**
+ * @param {?Element} menuItemElement
+ * @param {boolean} scheduleSubMenu
+ */
+ _highlightMenuItem(menuItemElement, scheduleSubMenu) {
+ if (this._highlightedMenuItemElement === menuItemElement)
+ return;
+
+ this._hideSubMenu();
+ if (this._highlightedMenuItemElement) {
+ this._highlightedMenuItemElement.classList.remove('soft-context-menu-item-mouse-over');
+ if (this._highlightedMenuItemElement._subItems && this._highlightedMenuItemElement._subMenuTimer) {
+ clearTimeout(this._highlightedMenuItemElement._subMenuTimer);
+ delete this._highlightedMenuItemElement._subMenuTimer;
+ }
+ }
+ this._highlightedMenuItemElement = menuItemElement;
+ if (this._highlightedMenuItemElement) {
+ this._highlightedMenuItemElement.classList.add('soft-context-menu-item-mouse-over');
+ this._contextMenuElement.focus();
+ if (scheduleSubMenu && this._highlightedMenuItemElement._subItems &&
+ !this._highlightedMenuItemElement._subMenuTimer)
+ this._highlightedMenuItemElement._subMenuTimer =
+ setTimeout(this._showSubMenu.bind(this, this._highlightedMenuItemElement), 150);
+ }
+ }
+
+ _highlightPrevious() {
+ var menuItemElement = this._highlightedMenuItemElement ? this._highlightedMenuItemElement.previousSibling :
+ this._contextMenuElement.lastChild;
+ while (menuItemElement && (menuItemElement._isSeparator || menuItemElement._isCustom))
+ menuItemElement = menuItemElement.previousSibling;
+ if (menuItemElement)
+ this._highlightMenuItem(menuItemElement, false);
+ }
+
+ _highlightNext() {
+ var menuItemElement = this._highlightedMenuItemElement ? this._highlightedMenuItemElement.nextSibling :
+ this._contextMenuElement.firstChild;
+ while (menuItemElement && (menuItemElement._isSeparator || menuItemElement._isCustom))
+ menuItemElement = menuItemElement.nextSibling;
+ if (menuItemElement)
+ this._highlightMenuItem(menuItemElement, false);
+ }
+
+ _menuKeyDown(event) {
+ switch (event.key) {
+ case 'ArrowUp':
+ this._highlightPrevious();
+ break;
+ case 'ArrowDown':
+ this._highlightNext();
+ break;
+ case 'ArrowLeft':
+ if (this._parentMenu) {
+ this._highlightMenuItem(null, false);
+ this._parentMenu._hideSubMenu();
}
- this._highlightedMenuItemElement = menuItemElement;
- if (this._highlightedMenuItemElement) {
- this._highlightedMenuItemElement.classList.add("soft-context-menu-item-mouse-over");
- this._contextMenuElement.focus();
- if (scheduleSubMenu && this._highlightedMenuItemElement._subItems && !this._highlightedMenuItemElement._subMenuTimer)
- this._highlightedMenuItemElement._subMenuTimer = setTimeout(this._showSubMenu.bind(this, this._highlightedMenuItemElement), 150);
+ break;
+ case 'ArrowRight':
+ if (!this._highlightedMenuItemElement)
+ break;
+ if (this._highlightedMenuItemElement._subItems) {
+ this._showSubMenu(this._highlightedMenuItemElement);
+ this._subMenu._focus();
+ this._subMenu._highlightNext();
}
- },
-
- _highlightPrevious: function()
- {
- var menuItemElement = this._highlightedMenuItemElement ? this._highlightedMenuItemElement.previousSibling : this._contextMenuElement.lastChild;
- while (menuItemElement && (menuItemElement._isSeparator || menuItemElement._isCustom))
- menuItemElement = menuItemElement.previousSibling;
- if (menuItemElement)
- this._highlightMenuItem(menuItemElement, false);
- },
-
- _highlightNext: function()
- {
- var menuItemElement = this._highlightedMenuItemElement ? this._highlightedMenuItemElement.nextSibling : this._contextMenuElement.firstChild;
- while (menuItemElement && (menuItemElement._isSeparator || menuItemElement._isCustom))
- menuItemElement = menuItemElement.nextSibling;
- if (menuItemElement)
- this._highlightMenuItem(menuItemElement, false);
- },
-
- _menuKeyDown: function(event)
- {
- switch (event.key) {
- case "ArrowUp":
- this._highlightPrevious(); break;
- case "ArrowDown":
- this._highlightNext(); break;
- case "ArrowLeft":
- if (this._parentMenu) {
- this._highlightMenuItem(null, false);
- this._parentMenu._hideSubMenu();
- }
- break;
- case "ArrowRight":
- if (!this._highlightedMenuItemElement)
- break;
- if (this._highlightedMenuItemElement._subItems) {
- this._showSubMenu(this._highlightedMenuItemElement);
- this._subMenu._focus();
- this._subMenu._highlightNext();
- }
- break;
- case "Escape":
- this._discardMenu(false, event); break;
- case "Enter":
- if (!isEnterKey(event))
- break;
- // Fall through
- case " ": // Space
- if (this._highlightedMenuItemElement)
- this._triggerAction(this._highlightedMenuItemElement, event);
- if (this._highlightedMenuItemElement._subItems) {
- this._subMenu._focus();
- this._subMenu._highlightNext();
- }
- break;
+ break;
+ case 'Escape':
+ this._discardMenu(false, event);
+ break;
+ case 'Enter':
+ if (!isEnterKey(event))
+ break;
+ // Fall through
+ case ' ': // Space
+ if (this._highlightedMenuItemElement)
+ this._triggerAction(this._highlightedMenuItemElement, event);
+ if (this._highlightedMenuItemElement._subItems) {
+ this._subMenu._focus();
+ this._subMenu._highlightNext();
}
+ break;
+ }
+ event.consume(true);
+ }
+
+ _glassPaneMouseUp(event) {
+ // Return if this is simple 'click', since dispatched on glass pane, can't use 'click' event.
+ if (new Date().getTime() - this._time < 300)
+ return;
+ if (event.target === this.element)
+ return;
+ this._discardMenu(true, event);
+ event.consume();
+ }
+
+ /**
+ * @param {boolean} closeParentMenus
+ * @param {!Event=} event
+ */
+ _discardMenu(closeParentMenus, event) {
+ if (this._subMenu && !closeParentMenus)
+ return;
+ if (this._glassPaneElement) {
+ var glassPane = this._glassPaneElement;
+ delete this._glassPaneElement;
+ // This can re-enter discardMenu due to blur.
+ this._document.body.removeChild(glassPane);
+ if (this._parentMenu) {
+ delete this._parentMenu._subMenu;
+ if (closeParentMenus)
+ this._parentMenu._discardMenu(closeParentMenus, event);
+ else
+ this._parentMenu._focus();
+ }
+
+ if (event)
event.consume(true);
- },
-
- _glassPaneMouseUp: function(event)
- {
- // Return if this is simple 'click', since dispatched on glass pane, can't use 'click' event.
- if (new Date().getTime() - this._time < 300)
- return;
- if (event.target === this.element)
- return;
- this._discardMenu(true, event);
- event.consume();
- },
-
- /**
- * @param {boolean} closeParentMenus
- * @param {!Event=} event
- */
- _discardMenu: function(closeParentMenus, event)
- {
- if (this._subMenu && !closeParentMenus)
- return;
- if (this._glassPaneElement) {
- var glassPane = this._glassPaneElement;
- delete this._glassPaneElement;
- // This can re-enter discardMenu due to blur.
- this._document.body.removeChild(glassPane);
- if (this._parentMenu) {
- delete this._parentMenu._subMenu;
- if (closeParentMenus)
- this._parentMenu._discardMenu(closeParentMenus, event);
- else
- this._parentMenu._focus();
- }
-
- if (event)
- event.consume(true);
- } else if (this._parentMenu && this._contextMenuElement.parentElementOrShadowHost()) {
- this._discardSubMenus();
- if (closeParentMenus)
- this._parentMenu._discardMenu(closeParentMenus, event);
- else
- this._parentMenu._focus();
- if (event)
- event.consume(true);
- }
- if (this._discardMenuOnResizeListener) {
- this._document.defaultView.removeEventListener("resize", this._discardMenuOnResizeListener, false);
- delete this._discardMenuOnResizeListener;
- }
- },
-
- _discardSubMenus: function()
- {
- if (this._subMenu)
- this._subMenu._discardSubMenus();
- if (this.element)
- this.element.remove();
- if (this._parentMenu)
- delete this._parentMenu._subMenu;
+ } else if (this._parentMenu && this._contextMenuElement.parentElementOrShadowHost()) {
+ this._discardSubMenus();
+ if (closeParentMenus)
+ this._parentMenu._discardMenu(closeParentMenus, event);
+ else
+ this._parentMenu._focus();
+ if (event)
+ event.consume(true);
+ }
+ if (this._discardMenuOnResizeListener) {
+ this._document.defaultView.removeEventListener('resize', this._discardMenuOnResizeListener, false);
+ delete this._discardMenuOnResizeListener;
}
+ }
+
+ _discardSubMenus() {
+ if (this._subMenu)
+ this._subMenu._discardSubMenus();
+ if (this.element)
+ this.element.remove();
+ if (this._parentMenu)
+ delete this._parentMenu._subMenu;
+ }
};

Powered by Google App Engine
This is Rietveld 408576698