Skip to content

Commit ab154fd

Browse files
Only build help popup when it's really needed
1 parent c3ed668 commit ab154fd

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

src/librustdoc/html/static/main.js

+19-12
Original file line numberDiff line numberDiff line change
@@ -349,28 +349,35 @@ function defocusSearchBar() {
349349
}
350350
}
351351

352-
function getHelpElement() {
353-
buildHelperPopup();
352+
function getHelpElement(build) {
353+
if (build !== false) {
354+
buildHelperPopup();
355+
}
354356
return document.getElementById("help");
355357
}
356358

357359
function displayHelp(display, ev, help) {
358-
help = help ? help : getHelpElement();
359360
if (display === true) {
361+
help = help ? help : getHelpElement(true);
360362
if (hasClass(help, "hidden")) {
361363
ev.preventDefault();
362364
removeClass(help, "hidden");
363365
addClass(document.body, "blur");
364366
}
365-
} else if (hasClass(help, "hidden") === false) {
366-
ev.preventDefault();
367-
addClass(help, "hidden");
368-
removeClass(document.body, "blur");
367+
} else {
368+
// No need to build the help popup if we want to hide it in case it hasn't been
369+
// built yet...
370+
help = help ? help : getHelpElement(false);
371+
if (help && hasClass(help, "hidden") === false) {
372+
ev.preventDefault();
373+
addClass(help, "hidden");
374+
removeClass(document.body, "blur");
375+
}
369376
}
370377
}
371378

372379
function handleEscape(ev) {
373-
var help = getHelpElement();
380+
var help = getHelpElement(false);
374381
var search = getSearchElement();
375382
if (hasClass(help, "hidden") === false) {
376383
displayHelp(false, ev, help);
@@ -537,6 +544,7 @@ function defocusSearchBar() {
537544
}());
538545

539546
document.addEventListener("click", function(ev) {
547+
var helpElem = getHelpElement(false);
540548
if (hasClass(ev.target, "help-button")) {
541549
displayHelp(true, ev);
542550
} else if (hasClass(ev.target, "collapse-toggle")) {
@@ -545,11 +553,10 @@ function defocusSearchBar() {
545553
collapseDocs(ev.target.parentNode, "toggle");
546554
} else if (ev.target.tagName === "SPAN" && hasClass(ev.target.parentNode, "line-numbers")) {
547555
handleSourceHighlight(ev);
548-
} else if (hasClass(getHelpElement(), "hidden") === false) {
549-
var help = getHelpElement();
550-
var is_inside_help_popup = ev.target !== help && help.contains(ev.target);
556+
} else if (helpElem && hasClass(helpElem, "hidden") === false) {
557+
var is_inside_help_popup = ev.target !== helpElem && helpElem.contains(ev.target);
551558
if (is_inside_help_popup === false) {
552-
addClass(help, "hidden");
559+
addClass(helpElem, "hidden");
553560
removeClass(document.body, "blur");
554561
}
555562
} else {

0 commit comments

Comments
 (0)