diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index 5ea6cf6ddf80b..d6c05de0df6f2 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -1935,9 +1935,9 @@ if (!DOMTokenList.prototype.remove) { }; } - function implHider(addOrRemove) { + function implHider(addOrRemove, fullHide) { return function(n) { - var is_method = hasClass(n, "method"); + var is_method = hasClass(n, "method") || fullHide; if (is_method || hasClass(n, "type")) { if (is_method === true) { if (addOrRemove) { @@ -1991,7 +1991,7 @@ if (!DOMTokenList.prototype.remove) { } } } else { - // we are collapsing the impl block + // we are collapsing the impl block(s). var parentElem = toggle.parentNode; relatedDoc = parentElem; @@ -2006,7 +2006,7 @@ if (!DOMTokenList.prototype.remove) { return; } - // Hide all functions, but not associated types/consts + // Hide all functions, but not associated types/consts. if (mode === "toggle") { if (hasClass(relatedDoc, "fns-now-collapsed") || @@ -2017,16 +2017,17 @@ if (!DOMTokenList.prototype.remove) { } } + var dontApplyBlockRule = toggle.parentNode.parentNode.id !== "main"; if (action === "show") { removeClass(relatedDoc, "fns-now-collapsed"); removeClass(docblock, "hidden-by-usual-hider"); - onEachLazy(toggle.childNodes, adjustToggle(false)); - onEachLazy(relatedDoc.childNodes, implHider(false)); + onEachLazy(toggle.childNodes, adjustToggle(false, dontApplyBlockRule)); + onEachLazy(relatedDoc.childNodes, implHider(false, dontApplyBlockRule)); } else if (action === "hide") { addClass(relatedDoc, "fns-now-collapsed"); addClass(docblock, "hidden-by-usual-hider"); - onEachLazy(toggle.childNodes, adjustToggle(true)); - onEachLazy(relatedDoc.childNodes, implHider(true)); + onEachLazy(toggle.childNodes, adjustToggle(true, dontApplyBlockRule); + onEachLazy(relatedDoc.childNodes, implHider(true, dontApplyBlockRule)); } } }