Skip to content

Commit ae1a2df

Browse files
authored
Rollup merge of #79986 - GuillaumeGomez:build-help-when-needed, r=Nemo157
Only build help popup when it's really needed When working on #79985, I realized that the help popup was built even when it wasn't needed. This PR only makes the help popup to be built when required. r? `@jyn514`
2 parents cebc8fe + e2c70f7 commit ae1a2df

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

src/librustdoc/html/static/main.js

+20-12
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// ignore-tidy-filelength
12
// Local js definitions:
23
/* global addClass, getSettingValue, hasClass */
34
/* global onEach, onEachLazy, hasOwnProperty, removeClass, updateLocalStorage */
@@ -374,28 +375,35 @@ function defocusSearchBar() {
374375
}
375376
}
376377

377-
function getHelpElement() {
378-
buildHelperPopup();
378+
function getHelpElement(build) {
379+
if (build !== false) {
380+
buildHelperPopup();
381+
}
379382
return document.getElementById("help");
380383
}
381384

382385
function displayHelp(display, ev, help) {
383-
help = help ? help : getHelpElement();
384386
if (display === true) {
387+
help = help ? help : getHelpElement(true);
385388
if (hasClass(help, "hidden")) {
386389
ev.preventDefault();
387390
removeClass(help, "hidden");
388391
addClass(document.body, "blur");
389392
}
390-
} else if (hasClass(help, "hidden") === false) {
391-
ev.preventDefault();
392-
addClass(help, "hidden");
393-
removeClass(document.body, "blur");
393+
} else {
394+
// No need to build the help popup if we want to hide it in case it hasn't been
395+
// built yet...
396+
help = help ? help : getHelpElement(false);
397+
if (help && hasClass(help, "hidden") === false) {
398+
ev.preventDefault();
399+
addClass(help, "hidden");
400+
removeClass(document.body, "blur");
401+
}
394402
}
395403
}
396404

397405
function handleEscape(ev) {
398-
var help = getHelpElement();
406+
var help = getHelpElement(false);
399407
var search = getSearchElement();
400408
if (hasClass(help, "hidden") === false) {
401409
displayHelp(false, ev, help);
@@ -558,6 +566,7 @@ function defocusSearchBar() {
558566
}());
559567

560568
document.addEventListener("click", function(ev) {
569+
var helpElem = getHelpElement(false);
561570
if (hasClass(ev.target, "help-button")) {
562571
displayHelp(true, ev);
563572
} else if (hasClass(ev.target, "collapse-toggle")) {
@@ -566,11 +575,10 @@ function defocusSearchBar() {
566575
collapseDocs(ev.target.parentNode, "toggle");
567576
} else if (ev.target.tagName === "SPAN" && hasClass(ev.target.parentNode, "line-numbers")) {
568577
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);
578+
} else if (helpElem && hasClass(helpElem, "hidden") === false) {
579+
var is_inside_help_popup = ev.target !== helpElem && helpElem.contains(ev.target);
572580
if (is_inside_help_popup === false) {
573-
addClass(help, "hidden");
581+
addClass(helpElem, "hidden");
574582
removeClass(document.body, "blur");
575583
}
576584
} else {

0 commit comments

Comments
 (0)