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

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

Issue 2824023002: DevTools: Use FocusRestorer in SoftContextMenu (Closed)
Patch Set: Created 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 4ba29b98c7f21a9e53a48e3a788b8d5a21457d5f..f7df3745ef8660548c4b4098f4003e3f019bc05c 100644
--- a/third_party/WebKit/Source/devtools/front_end/ui/SoftContextMenu.js
+++ b/third_party/WebKit/Source/devtools/front_end/ui/SoftContextMenu.js
@@ -69,13 +69,29 @@ UI.SoftContextMenu = class {
this._focus();
if (!this._parentMenu) {
- this._onBodyMouseDown = event => this._discardMenu(true, event);
+ this._onBodyMouseDown = event => {
+ this.discard();
+ event.consume(true);
+ };
this._document.body.addEventListener('mousedown', this._onBodyMouseDown, false);
}
}
discard() {
- this._discardMenu(true);
+ if (this._subMenu)
+ this._subMenu._discardSubMenus();
dgozman 2017/04/18 18:40:20 You removed this method.
einbinder 2017/04/18 23:47:02 Fixed
+ if (this._focusRestorer)
+ this._focusRestorer.restore();
+ if (this._glassPane) {
+ this._glassPane.hide();
+ delete this._glassPane;
+ if (this._onBodyMouseDown) {
+ this._document.body.removeEventListener('mousedown', this._onBodyMouseDown, false);
+ delete this._onBodyMouseDown;
+ }
+ }
+ if (this._parentMenu)
+ delete this._parentMenu._subMenu;
}
_createMenuItem(item) {
@@ -156,13 +172,24 @@ UI.SoftContextMenu = class {
event.consume();
}
+ /**
+ * @return {!UI.SoftContextMenu}
+ */
+ _root() {
+ var root = this;
+ while (root._parentMenu)
+ root = root._parentMenu;
+ return root;
+ }
+
_focus() {
dgozman 2017/04/18 18:40:20 Does anyone call this? Inline into show?
einbinder 2017/04/18 23:47:02 Inlined.
- this._contextMenuElement.focus();
+ this._focusRestorer = new UI.ElementFocusRestorer(this._contextMenuElement);
}
_triggerAction(menuItemElement, event) {
if (!menuItemElement._subItems) {
- this._discardMenu(true, event);
+ this._root().discard();
+ event.consume(true);
if (typeof menuItemElement._actionId !== 'undefined') {
this._itemSelectedCallback(menuItemElement._actionId);
delete menuItemElement._actionId;
@@ -192,13 +219,6 @@ UI.SoftContextMenu = class {
this._subMenu.show(this._document, anchorBox);
}
- _hideSubMenu() {
- if (!this._subMenu)
- return;
- this._subMenu._discardSubMenus();
- this._focus();
- }
-
_menuItemMouseOver(event) {
this._highlightMenuItem(event.target, true);
}
@@ -222,7 +242,8 @@ UI.SoftContextMenu = class {
if (this._highlightedMenuItemElement === menuItemElement)
return;
- this._hideSubMenu();
+ if (this._subMenu)
+ this._subMenu.discard();
if (this._highlightedMenuItemElement) {
this._highlightedMenuItemElement.classList.remove('force-white-icons');
this._highlightedMenuItemElement.classList.remove('soft-context-menu-item-mouse-over');
@@ -273,7 +294,7 @@ UI.SoftContextMenu = class {
case 'ArrowLeft':
if (this._parentMenu) {
this._highlightMenuItem(null, false);
- this._parentMenu._hideSubMenu();
+ this.discard();
}
break;
case 'ArrowRight':
@@ -281,12 +302,11 @@ UI.SoftContextMenu = class {
break;
if (this._highlightedMenuItemElement._subItems) {
this._showSubMenu(this._highlightedMenuItemElement);
- this._subMenu._focus();
this._subMenu._highlightNext();
}
break;
case 'Escape':
- this._discardMenu(false, event);
+ this.discard();
break;
case 'Enter':
if (!isEnterKey(event))
@@ -303,40 +323,4 @@ UI.SoftContextMenu = class {
}
event.consume(true);
}
-
- /**
- * @param {boolean} closeParentMenus
- * @param {!Event=} event
- */
- _discardMenu(closeParentMenus, event) {
- if (this._subMenu && !closeParentMenus)
- return;
-
- this._discardSubMenus();
-
- if (this._parentMenu) {
- if (closeParentMenus)
- this._parentMenu._discardMenu(closeParentMenus, event);
- else
- this._parentMenu._focus();
- }
-
- if (event)
- event.consume(true);
- }
-
- _discardSubMenus() {
- if (this._subMenu)
- this._subMenu._discardSubMenus();
- if (this._glassPane) {
- this._glassPane.hide();
- delete this._glassPane;
- if (this._onBodyMouseDown) {
- this._document.body.removeEventListener('mousedown', this._onBodyMouseDown, false);
- delete this._onBodyMouseDown;
- }
- }
- if (this._parentMenu)
- delete this._parentMenu._subMenu;
- }
};
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698