Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 5751c66

Browse files
authoredApr 6, 2018
Rollup merge of rust-lang#49652 - GuillaumeGomez:anchor-collapsed, r=QuietMisdreavus
Fix anchors issue when everything is collapsed Fixes rust-lang#49455. @frewsxcv does it seem good for you like this? r? @QuietMisdreavus
2 parents f2f770b + 238583a commit 5751c66

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed
 

‎src/librustdoc/html/static/main.js

+21-9
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@
5656
};
5757
}
5858

59+
function getPageId() {
60+
var id = document.location.href.split('#')[1];
61+
if (id) {
62+
return id.split('?')[0].split('&')[0];
63+
}
64+
return null;
65+
}
66+
5967
function hasClass(elem, className) {
6068
if (elem && className && elem.className) {
6169
var elemClass = elem.className;
@@ -1643,7 +1651,7 @@
16431651
}
16441652
}
16451653

1646-
function toggleAllDocs() {
1654+
function toggleAllDocs(pageId) {
16471655
var toggle = document.getElementById("toggle-all-docs");
16481656
if (hasClass(toggle, "will-expand")) {
16491657
updateLocalStorage("rustdoc-collapse", "false");
@@ -1664,12 +1672,12 @@
16641672
toggle.title = "expand all docs";
16651673

16661674
onEach(document.getElementsByClassName("collapse-toggle"), function(e) {
1667-
collapseDocs(e, "hide");
1675+
collapseDocs(e, "hide", pageId);
16681676
});
16691677
}
16701678
}
16711679

1672-
function collapseDocs(toggle, mode) {
1680+
function collapseDocs(toggle, mode, pageId) {
16731681
if (!toggle || !toggle.parentNode) {
16741682
return;
16751683
}
@@ -1745,14 +1753,18 @@
17451753
}
17461754
}
17471755

1748-
var relatedDoc = toggle.parentNode;
1756+
var parentElem = toggle.parentNode;
1757+
var relatedDoc = parentElem;
17491758
var docblock = relatedDoc.nextElementSibling;
17501759

17511760
while (!hasClass(relatedDoc, "impl-items")) {
17521761
relatedDoc = relatedDoc.nextElementSibling;
17531762
}
17541763

1755-
if (!relatedDoc && !hasClass(docblock, "docblock")) {
1764+
if ((!relatedDoc && !hasClass(docblock, "docblock")) ||
1765+
(pageId && onEach(relatedDoc.childNodes, function(e) {
1766+
return e.id === pageId;
1767+
}) === true)) {
17561768
return;
17571769
}
17581770

@@ -1782,15 +1794,15 @@
17821794
}
17831795
}
17841796

1785-
function autoCollapseAllImpls() {
1797+
function autoCollapseAllImpls(pageId) {
17861798
// Automatically minimize all non-inherent impls
17871799
onEach(document.getElementsByClassName('impl'), function(n) {
17881800
// inherent impl ids are like 'impl' or impl-<number>'
17891801
var inherent = (n.id.match(/^impl(?:-\d+)?$/) !== null);
17901802
if (!inherent) {
17911803
onEach(n.childNodes, function(m) {
17921804
if (hasClass(m, "collapse-toggle")) {
1793-
collapseDocs(m, "hide");
1805+
collapseDocs(m, "hide", pageId);
17941806
}
17951807
});
17961808
}
@@ -1900,7 +1912,7 @@
19001912
}
19011913
})
19021914

1903-
autoCollapseAllImpls();
1915+
autoCollapseAllImpls(getPageId());
19041916

19051917
function createToggleWrapper() {
19061918
var span = document.createElement('span');
@@ -2030,7 +2042,7 @@
20302042
};
20312043

20322044
if (getCurrentValue("rustdoc-collapse") === "true") {
2033-
toggleAllDocs();
2045+
toggleAllDocs(getPageId());
20342046
}
20352047
}());
20362048

‎src/librustdoc/html/static/storage.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@ function onEach(arr, func) {
1919
if (arr && arr.length > 0 && func) {
2020
for (var i = 0; i < arr.length; i++) {
2121
if (func(arr[i]) === true) {
22-
break;
22+
return true;
2323
}
2424
}
2525
}
26+
return false;
2627
}
2728

2829
function updateLocalStorage(name, value) {

0 commit comments

Comments
 (0)
Please sign in to comment.