Skip to content

Commit 1491496

Browse files
Only build help popup when it's really needed
1 parent b97fd3e commit 1491496

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
@@ -374,28 +374,35 @@ function defocusSearchBar() {
374374
}
375375
}
376376

377-
function getHelpElement() {
378-
buildHelperPopup();
377+
function getHelpElement(build) {
378+
if (build !== false) {
379+
buildHelperPopup();
380+
}
379381
return document.getElementById("help");
380382
}
381383

382384
function displayHelp(display, ev, help) {
383-
help = help ? help : getHelpElement();
384385
if (display === true) {
386+
help = help ? help : getHelpElement(true);
385387
if (hasClass(help, "hidden")) {
386388
ev.preventDefault();
387389
removeClass(help, "hidden");
388390
addClass(document.body, "blur");
389391
}
390-
} else if (hasClass(help, "hidden") === false) {
391-
ev.preventDefault();
392-
addClass(help, "hidden");
393-
removeClass(document.body, "blur");
392+
} else {
393+
// No need to build the help popup if we want to hide it in case it hasn't been
394+
// built yet...
395+
help = help ? help : getHelpElement(false);
396+
if (help && hasClass(help, "hidden") === false) {
397+
ev.preventDefault();
398+
addClass(help, "hidden");
399+
removeClass(document.body, "blur");
400+
}
394401
}
395402
}
396403

397404
function handleEscape(ev) {
398-
var help = getHelpElement();
405+
var help = getHelpElement(false);
399406
var search = getSearchElement();
400407
if (hasClass(help, "hidden") === false) {
401408
displayHelp(false, ev, help);
@@ -558,6 +565,7 @@ function defocusSearchBar() {
558565
}());
559566

560567
document.addEventListener("click", function(ev) {
568+
var helpElem = getHelpElement(false);
561569
if (hasClass(ev.target, "help-button")) {
562570
displayHelp(true, ev);
563571
} else if (hasClass(ev.target, "collapse-toggle")) {
@@ -566,11 +574,10 @@ function defocusSearchBar() {
566574
collapseDocs(ev.target.parentNode, "toggle");
567575
} else if (ev.target.tagName === "SPAN" && hasClass(ev.target.parentNode, "line-numbers")) {
568576
handleSourceHighlight(ev);
569-
} else if (hasClass(getHelpElement(), "hidden") === false) {
570-
var help = getHelpElement();
571-
var is_inside_help_popup = ev.target !== help && help.contains(ev.target);
577+
} else if (helpElem && hasClass(helpElem, "hidden") === false) {
578+
var is_inside_help_popup = ev.target !== helpElem && helpElem.contains(ev.target);
572579
if (is_inside_help_popup === false) {
573-
addClass(help, "hidden");
580+
addClass(helpElem, "hidden");
574581
removeClass(document.body, "blur");
575582
}
576583
} else {

0 commit comments

Comments
 (0)