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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/ui/Dialog.js

Issue 2016963002: DevTools: rework focus logic (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove stray newline Created 4 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 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 { 66 {
67 if (WebInspector.Dialog._instance) 67 if (WebInspector.Dialog._instance)
68 WebInspector.Dialog._instance.detach(); 68 WebInspector.Dialog._instance.detach();
69 WebInspector.Dialog._instance = this; 69 WebInspector.Dialog._instance = this;
70 70
71 var document = /** @type {!Document} */ (WebInspector.Dialog._modalHostV iew.element.ownerDocument); 71 var document = /** @type {!Document} */ (WebInspector.Dialog._modalHostV iew.element.ownerDocument);
72 this._disableTabIndexOnElements(document); 72 this._disableTabIndexOnElements(document);
73 73
74 this._glassPane = new WebInspector.GlassPane(document, this._dimmed); 74 this._glassPane = new WebInspector.GlassPane(document, this._dimmed);
75 this._glassPane.element.addEventListener("click", this._onGlassPaneClick .bind(this), false); 75 this._glassPane.element.addEventListener("click", this._onGlassPaneClick .bind(this), false);
76 WebInspector.GlassPane.DefaultFocusedViewStack.push(this); 76
77 // When a dialog closes, focus should be restored to the previous focuse d element when
78 // possible, otherwise the default inspector view element.
79 WebInspector.Dialog._previousFocusedElement = WebInspector.currentFocusE lement() || WebInspector.Dialog._modalHostView.defaultFocusedElement();
77 80
78 WebInspector.Widget.prototype.show.call(this, this._glassPane.element); 81 WebInspector.Widget.prototype.show.call(this, this._glassPane.element);
79 82
80 this._position(); 83 this._position();
81 this.focus(); 84 this.focus();
82 }, 85 },
83 86
84 /** 87 /**
85 * @override 88 * @override
86 */ 89 */
87 detach: function() 90 detach: function()
88 { 91 {
89 WebInspector.Widget.prototype.detach.call(this); 92 WebInspector.Widget.prototype.detach.call(this);
90 93
91 WebInspector.GlassPane.DefaultFocusedViewStack.pop();
92 this._glassPane.dispose(); 94 this._glassPane.dispose();
93 delete this._glassPane; 95 delete this._glassPane;
94 96
97 if (WebInspector.Dialog._previousFocusedElement)
98 WebInspector.Dialog._previousFocusedElement.focus();
99 delete WebInspector.Dialog._previousFocusedElement;
100
95 this._restoreTabIndexOnElements(); 101 this._restoreTabIndexOnElements();
96 102
97 delete WebInspector.Dialog._instance; 103 delete WebInspector.Dialog._instance;
98 }, 104 },
99 105
100 addCloseButton: function() 106 addCloseButton: function()
101 { 107 {
102 var closeButton = this.contentElement.createChild("div", "dialog-close-b utton", "dt-close-button"); 108 var closeButton = this.contentElement.createChild("div", "dialog-close-b utton", "dt-close-button");
103 closeButton.gray = true; 109 closeButton.gray = true;
104 closeButton.addEventListener("click", this.detach.bind(this, false), fal se); 110 closeButton.addEventListener("click", this.detach.bind(this, false), fal se);
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 { 250 {
245 var children = this.children(); 251 var children = this.children();
246 if (children.length) 252 if (children.length)
247 return children[0].defaultFocusedElement(); 253 return children[0].defaultFocusedElement();
248 return this.element; 254 return this.element;
249 }, 255 },
250 256
251 __proto__: WebInspector.Widget.prototype 257 __proto__: WebInspector.Widget.prototype
252 }; 258 };
253 259
260 /** @type {?Element} */
261 WebInspector.Dialog._previousFocusedElement = null;
262
254 /** @type {?WebInspector.Widget} */ 263 /** @type {?WebInspector.Widget} */
255 WebInspector.Dialog._modalHostView = null; 264 WebInspector.Dialog._modalHostView = null;
256 265
257 /** 266 /**
258 * @param {!WebInspector.Widget} view 267 * @param {!WebInspector.Widget} view
259 */ 268 */
260 WebInspector.Dialog.setModalHostView = function(view) 269 WebInspector.Dialog.setModalHostView = function(view)
261 { 270 {
262 WebInspector.Dialog._modalHostView = view; 271 WebInspector.Dialog._modalHostView = view;
263 }; 272 };
264 273
265 /** 274 /**
266 * FIXME: make utility method in Dialog, so clients use it instead of this gette r. 275 * FIXME: make utility method in Dialog, so clients use it instead of this gette r.
267 * Method should be like Dialog.showModalElement(position params, reposition cal lback). 276 * Method should be like Dialog.showModalElement(position params, reposition cal lback).
268 * @return {?WebInspector.Widget} 277 * @return {?WebInspector.Widget}
269 */ 278 */
270 WebInspector.Dialog.modalHostView = function() 279 WebInspector.Dialog.modalHostView = function()
271 { 280 {
272 return WebInspector.Dialog._modalHostView; 281 return WebInspector.Dialog._modalHostView;
273 }; 282 };
274 283
275 WebInspector.Dialog.modalHostRepositioned = function() 284 WebInspector.Dialog.modalHostRepositioned = function()
276 { 285 {
277 if (WebInspector.Dialog._instance) 286 if (WebInspector.Dialog._instance)
278 WebInspector.Dialog._instance._position(); 287 WebInspector.Dialog._instance._position();
279 }; 288 };
280 289
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698