Skip to content

Commit

Permalink
Rollup merge of rust-lang#99373 - GuillaumeGomez:source-code-sidebar-…
Browse files Browse the repository at this point in the history
…tree-auto-expand, r=notriddle

Fix source code sidebar tree auto-expand

Here is the bug:

![Screenshot from 2022-07-17 13-32-00](https://user-images.githubusercontent.com/3050060/179397712-bfb1c279-0ed2-4cb5-aef5-05741921bcc3.png)

It was happening because as soon as we found the file (from the URL), every item following it was then opened, even if it wasn't supposed to.

The GUI test ensures that it doesn't happen by adding two nested levels and ensuring only this path is "open".

r? `@notriddle`
  • Loading branch information
JohnTitor authored Jul 17, 2022
2 parents af53fea + 98bceb0 commit c3226d0
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 6 deletions.
2 changes: 1 addition & 1 deletion src/librustdoc/html/static/js/source-script.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ function createDirEntry(elem, parent, fullPath, hasFoundFile) {
folders.className = "folders";
if (elem.dirs) {
for (const dir of elem.dirs) {
if (createDirEntry(dir, folders, fullPath, hasFoundFile)) {
if (createDirEntry(dir, folders, fullPath, false)) {
dirEntry.open = true;
hasFoundFile = true;
}
Expand Down
22 changes: 17 additions & 5 deletions src/test/rustdoc-gui/sidebar-source-code.goml
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,27 @@ click: (10, 10)
wait-for: "html:not(.expanded)"
assert: "nav.sidebar"

// Checking that only the path to the current file is "open".
goto: file://|DOC_PATH|/src/lib2/another_folder/sub_mod/mod.rs.html
// First we expand the sidebar again.
click: (10, 10)
// We wait for the sidebar to be expanded.
wait-for-css: (".source-sidebar-expanded nav.sidebar", {"width": "300px"})
assert: "//*[@class='dir-entry' and @open]/*[text()='lib2']"
assert: "//*[@class='dir-entry' and @open]/*[text()='another_folder']"
assert: "//*[@class='dir-entry' and @open]/*[text()='sub_mod']"
// Only "another_folder" should be "open" in "lib2".
assert: "//*[@class='dir-entry' and not(@open)]/*[text()='another_mod']"
// All other trees should be collapsed.
assert-count: ("//*[@id='source-sidebar']/details[not(text()='lib2') and not(@open)]", 5)

// We now switch to mobile mode.
size: (600, 600)
// We check that the sidebar has the expected width (0).
assert-css: ("nav.sidebar", {"width": "0px"})
// We expand the sidebar.
click: "#sidebar-toggle"
assert-css: (".source-sidebar-expanded nav.sidebar", {"width": "600px"})
wait-for-css: (".source-sidebar-expanded nav.sidebar", {"width": "600px"})
// We collapse the sidebar.
click: (10, 10)
// We check that the sidebar has the expected width (0).
assert-css: ("nav.sidebar", {"width": "0px"})
// We ensure that the class has been removed.
assert-false: ".source-sidebar-expanded"
assert: "nav.sidebar"
Expand Down
3 changes: 3 additions & 0 deletions src/test/rustdoc-gui/src/lib2/another_folder/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
pub fn another_fn() {}

pub mod sub_mod;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pub fn subsubsub() {}
1 change: 1 addition & 0 deletions src/test/rustdoc-gui/src/lib2/another_mod/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pub fn tadam() {}
3 changes: 3 additions & 0 deletions src/test/rustdoc-gui/src/lib2/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

#![feature(doc_cfg)]

pub mod another_folder;
pub mod another_mod;

pub mod module {
pub mod sub_module {
pub mod sub_sub_module {
Expand Down

0 comments on commit c3226d0

Please sign in to comment.