Chromium Code Reviews| Index: chrome/browser/resources/extensions/extensions.js |
| diff --git a/chrome/browser/resources/extensions/extensions.js b/chrome/browser/resources/extensions/extensions.js |
| index 9c3bc1d9322e76ad1a05106d87fe7c22a3398f45..81d27dc6a9f3474e4468d6391e82b5e5e8a65deb 100644 |
| --- a/chrome/browser/resources/extensions/extensions.js |
| +++ b/chrome/browser/resources/extensions/extensions.js |
| @@ -379,13 +379,8 @@ cr.define('extensions', function() { |
| */ |
| ExtensionSettings.showOverlay = function(node) { |
| var pageDiv = $('extension-settings'); |
| - if (node) { |
| - pageDiv.style.width = window.getComputedStyle(pageDiv).width; |
| - document.body.classList.add('no-scroll'); |
| - } else { |
| - document.body.classList.remove('no-scroll'); |
| - pageDiv.style.width = ''; |
| - } |
| + pageDiv.style.width = node ? window.getComputedStyle(pageDiv).width : ''; |
| + document.body.classList.toggle('no-scroll', node); |
| var currentlyShowingOverlay = ExtensionSettings.getCurrentOverlay(); |
| if (currentlyShowingOverlay) { |
| @@ -394,8 +389,11 @@ cr.define('extensions', function() { |
| } |
| if (node) { |
| - if (document.activeElement != document.body) |
| - document.activeElement.blur(); |
| + var lastFocused = document.activeElement; |
| + $('overlay').addEventListener('cancelOverlay', function f() { |
| + lastFocused.focus(); |
|
not at google - send to devlin
2015/02/06 21:31:38
Correct me if I'm wrong (in which case I'm trying
Dan Beam
2015/02/06 21:50:02
i know
|
| + $('overlay').removeEventListener('cancelOverlay', f); |
| + }); |
| node.classList.add('showing'); |
| } |
| @@ -405,10 +403,29 @@ cr.define('extensions', function() { |
| } |
| $('overlay').hidden = !node; |
| + |
| + if (node) |
| + ExtensionSettings.focusOverlay(); |
| + |
| uber.invokeMethodOnParent(node ? 'beginInterceptingEvents' : |
| 'stopInterceptingEvents'); |
| }; |
| + ExtensionSettings.focusOverlay = function() { |
| + var currentlyShowingOverlay = ExtensionSettings.getCurrentOverlay(); |
| + assert(currentlyShowingOverlay); |
| + |
| + if (cr.ui.FocusOutlineManager.forDocument(document).visible) { |
| + var extraToFocus = '#extension-options-overlay-guest extensionoptions'; |
| + cr.ui.setInitialFocus(currentlyShowingOverlay, extraToFocus); |
| + } |
| + |
| + if (!currentlyShowingOverlay.contains(document.activeElement)) { |
| + // Make sure focus isn't stuck behind the overlay. |
| + document.activeElement.blur(); |
| + } |
| + }; |
| + |
| /** |
| * Utility function to find the width of various UI strings and synchronize |
| * the width of relevant spans. This is crucial for making sure the |