Skip to content

Commit 0d34fe4

Browse files
Unify escape usage
1 parent 6b5f9b2 commit 0d34fe4

File tree

1 file changed

+29
-18
lines changed

1 file changed

+29
-18
lines changed

src/librustdoc/html/static/main.js

+29-18
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@ if (!DOMTokenList.prototype.remove) {
3939
};
4040
}
4141

42+
function getSearchInput() {
43+
return document.getElementsByClassName("search-input")[0];
44+
}
45+
46+
function getSearchElement() {
47+
return document.getElementById("search");
48+
}
49+
4250
(function() {
4351
"use strict";
4452

@@ -71,7 +79,7 @@ if (!DOMTokenList.prototype.remove) {
7179
"derive",
7280
"traitalias"];
7381

74-
var search_input = document.getElementsByClassName("search-input")[0];
82+
var search_input = getSearchInput();
7583

7684
// On the search screen, so you remain on the last tab you opened.
7785
//
@@ -158,7 +166,7 @@ if (!DOMTokenList.prototype.remove) {
158166
// If we're in mobile mode, we should add the sidebar in any case.
159167
hideSidebar();
160168
var elem;
161-
var search = document.getElementById("search");
169+
var search = getSearchElement();
162170
var i, from, to, match = window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/);
163171
if (match) {
164172
from = parseInt(match[1], 10);
@@ -250,7 +258,12 @@ if (!DOMTokenList.prototype.remove) {
250258
return String.fromCharCode(c);
251259
}
252260

261+
function getHelpElement() {
262+
return document.getElementById("help");
263+
}
264+
253265
function displayHelp(display, ev, help) {
266+
var help = help ? help : getHelpElement();
254267
if (display === true) {
255268
if (hasClass(help, "hidden")) {
256269
ev.preventDefault();
@@ -264,9 +277,10 @@ if (!DOMTokenList.prototype.remove) {
264277
}
265278
}
266279

267-
function handleEscape(ev, help) {
280+
function handleEscape(ev) {
281+
var help = getHelpElement();
282+
var search = getSearchElement();
268283
hideModal();
269-
var search = document.getElementById("search");
270284
if (hasClass(help, "hidden") === false) {
271285
displayHelp(false, ev, help);
272286
} else if (hasClass(search, "hidden") === false) {
@@ -284,22 +298,21 @@ if (!DOMTokenList.prototype.remove) {
284298
return;
285299
}
286300

287-
var help = document.getElementById("help");
288301
if (document.activeElement.tagName === "INPUT") {
289302
switch (getVirtualKey(ev)) {
290303
case "Escape":
291-
handleEscape(ev, help);
304+
handleEscape(ev);
292305
break;
293306
}
294307
} else {
295308
switch (getVirtualKey(ev)) {
296309
case "Escape":
297-
handleEscape(ev, help);
310+
handleEscape(ev);
298311
break;
299312

300313
case "s":
301314
case "S":
302-
displayHelp(false, ev, help);
315+
displayHelp(false, ev);
303316
hideModal();
304317
ev.preventDefault();
305318
focusSearchBar();
@@ -314,7 +327,7 @@ if (!DOMTokenList.prototype.remove) {
314327
case "?":
315328
if (ev.shiftKey) {
316329
hideModal();
317-
displayHelp(true, ev, help);
330+
displayHelp(true, ev);
318331
}
319332
break;
320333
}
@@ -1285,9 +1298,7 @@ if (!DOMTokenList.prototype.remove) {
12851298
} else if (e.which === 16) { // shift
12861299
// Does nothing, it's just to avoid losing "focus" on the highlighted element.
12871300
} else if (e.which === 27) { // escape
1288-
removeClass(actives[currentTab][0], "highlighted");
1289-
search_input.value = "";
1290-
defocusSearchBar();
1301+
handleEscape(e);
12911302
} else if (actives[currentTab].length > 0) {
12921303
removeClass(actives[currentTab][0], "highlighted");
12931304
}
@@ -1438,7 +1449,7 @@ if (!DOMTokenList.prototype.remove) {
14381449
ret_others[0] + ret_in_args[0] + ret_returned[0] + "</div>";
14391450

14401451
addClass(main, "hidden");
1441-
var search = document.getElementById("search");
1452+
var search = getSearchElement();
14421453
removeClass(search, "hidden");
14431454
search.innerHTML = output;
14441455
var tds = search.getElementsByTagName("td");
@@ -1648,7 +1659,7 @@ if (!DOMTokenList.prototype.remove) {
16481659
if (hasClass(main, "content")) {
16491660
removeClass(main, "hidden");
16501661
}
1651-
var search_c = document.getElementById("search");
1662+
var search_c = getSearchElement();
16521663
if (hasClass(search_c, "content")) {
16531664
addClass(search_c, "hidden");
16541665
}
@@ -1695,7 +1706,7 @@ if (!DOMTokenList.prototype.remove) {
16951706
if (hasClass(main, "content")) {
16961707
removeClass(main, "hidden");
16971708
}
1698-
var search_c = document.getElementById("search");
1709+
var search_c = getSearchElement();
16991710
if (hasClass(search_c, "content")) {
17001711
addClass(search_c, "hidden");
17011712
}
@@ -2464,7 +2475,7 @@ if (!DOMTokenList.prototype.remove) {
24642475
var params = getQueryStringParams();
24652476
if (params && params.search) {
24662477
addClass(main, "hidden");
2467-
var search = document.getElementById("search");
2478+
var search = getSearchElement();
24682479
removeClass(search, "hidden");
24692480
search.innerHTML = "<h3 style=\"text-align: center;\">Loading search results...</h3>";
24702481
}
@@ -2549,10 +2560,10 @@ if (!DOMTokenList.prototype.remove) {
25492560

25502561
// Sets the focus on the search bar at the top of the page
25512562
function focusSearchBar() {
2552-
document.getElementsByClassName("search-input")[0].focus();
2563+
getSearchInput().focus();
25532564
}
25542565

25552566
// Removes the focus from the search bar
25562567
function defocusSearchBar() {
2557-
document.getElementsByClassName("search-input")[0].blur();
2568+
getSearchInput().blur();
25582569
}

0 commit comments

Comments
 (0)