Skip to content

Commit 38b0a66

Browse files
authored
Unrolled build for rust-lang#129545
Rollup merge of rust-lang#129545 - notriddle:notriddle/toolbar-v2, r=GuillaumeGomez rustdoc: redesign toolbar and disclosure widgets Fixes rust-lang#77899 Fixes rust-lang#90310 ## Preview | before | after | ------ | ----- | ![image](https://github.com/user-attachments/assets/ebeec185-3a72-481d-921e-a9a885f348d9) | ![image](https://github.com/user-attachments/assets/08735a65-99d1-4523-ab77-ddb164c0a5db) | ![image](https://github.com/user-attachments/assets/ae8e0f24-49cb-445d-b9bd-cec9c57b94e7) | ![image](https://github.com/user-attachments/assets/ba484f94-b031-41fc-b8a8-6cd81be8fb6b) | ![image](https://github.com/user-attachments/assets/8c2cc041-a138-4950-a12e-3d529c8a5339) | ![image](https://github.com/user-attachments/assets/e7f010bd-19e2-4711-85bf-3fd00c3e5647) | ![image](https://github.com/user-attachments/assets/e2b63785-971c-489e-b069-eb85f6a30620) | ![image](https://github.com/user-attachments/assets/b65eea16-d6a3-4aa3-8a27-6ded74009010) | ![image](https://github.com/user-attachments/assets/1c7b0901-a61a-4325-9d01-9d8b14b476aa) | ![image](https://github.com/user-attachments/assets/d4a485db-d9f1-4a62-94bc-a3d125ea6dc1) | N/A | ![image](https://github.com/user-attachments/assets/7add0a2a-7fd7-483d-87ee-51ee45a2fe5d) | ![image](https://github.com/user-attachments/assets/334f50bc-9f8d-42d9-a7df-95058f7cdfd5) | ![image](https://github.com/user-attachments/assets/451fcc22-b034-453c-ae4b-b948fd6bd779) | ![image](https://github.com/user-attachments/assets/132f720c-802a-466d-bd55-c7a4750acdc3) | ![image](https://github.com/user-attachments/assets/177b7921-06c5-467d-87d3-9cdf88c4e50b) https://notriddle.com/rustdoc-html-demo-12/toolbar-v2/std/index.html ## Description This adds labels to the icons and moves them away from the search box. These changes are made together, because they work together, but are based on several complaints: * The [+/-] thing are a Reddit-ism. They don't look like buttons, but look like syntax <https://rust-lang.zulipchat.com/#narrow/stream/266220-t-rustdoc/topic/More.20visual.20difference.20for.20the.20.2B.2F-.20.20Icons>, <rust-lang#59851> (some of these are laundry lists with more suggestions, but they all mention [+/-] looking wrong) * The settings, help, and summary buttons are also too hard to recognize <https://lwn.net/Articles/987070/>, <rust-lang#90310>, <rust-lang#14475 (comment)>, <https://internals.rust-lang.org/t/improve-rustdoc-design/12758> ("Not all functionality is self-explanatory, for example the [+] button in the top right corner, the theme picker or the settings button.") The toggle-all and toggle-individual buttons both need done at once, since we want them to look like they go together. This changes them from both being [+/-] to both being arrows. CC <rust-lang#113074 (comment)> and ``@jsha`` regarding the use of triangles for disclosure, which is what everyone wanted, but was pending a good toggle-all button. This PR adds a toggle-all button that should work. Settings and Help are also migrated, so that the whole group can benefit from being described using actual words. The breadcrumbs also get redesigned, so that they use less space, by shrinking the parent module path parts. This is done at the same time as the toolbar redesign because it's, effectively, moving space from the toolbar to the breadcrumbs. This is aimed at avoiding any line wrapping at desktop sizes. ## Prior art This style of toolbar, with explicit labels on the buttons, used to be more popular. It's not very common in web browsers nowadays, and for truly universal icons like ⬅️ I can understand why, but words are great when icons fail. ![image](https://github.com/user-attachments/assets/9a4a0498-232d-4d60-87b9-f601f4515254)
2 parents f5cd2c5 + cc3ffe4 commit 38b0a66

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+540
-337
lines changed

library/std/src/lib.rs

+11-7
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,17 @@
3232
//!
3333
//! Once you are familiar with the contents of the standard library you may
3434
//! begin to find the verbosity of the prose distracting. At this stage in your
35-
//! development you may want to press the `[-]` button near the top of the
36-
//! page to collapse it into a more skimmable view.
37-
//!
38-
//! While you are looking at that `[-]` button also notice the `source`
39-
//! link. Rust's API documentation comes with the source code and you are
40-
//! encouraged to read it. The standard library source is generally high
41-
//! quality and a peek behind the curtains is often enlightening.
35+
//! development you may want to press the <code>
36+
//! <svg style="width:0.75rem;height:0.75rem" viewBox="0 0 12 12"
37+
//! stroke="currentColor" fill="none">
38+
//! <path d="M2,2l4,4l4,-4M2,6l4,4l4,-4"/></svg> Summary</code> button near the
39+
//! top of the page to collapse it into a more skimmable view.
40+
//!
41+
//! While you are looking at the top of the page, also notice the
42+
//! <code>source</code> link. Rust's API documentation comes with the source
43+
//! code and you are encouraged to read it. The standard library source is
44+
//! generally high quality and a peek behind the curtains is
45+
//! often enlightening.
4246
//!
4347
//! # What is in the standard library documentation?
4448
//!

src/librustdoc/html/sources.rs

+27-8
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,11 @@ pub(crate) fn render(cx: &mut Context<'_>, krate: &clean::Crate) -> Result<(), E
2626

2727
let dst = cx.dst.join("src").join(krate.name(cx.tcx()).as_str());
2828
cx.shared.ensure_dir(&dst)?;
29+
let crate_name = krate.name(cx.tcx());
30+
let crate_name = crate_name.as_str();
2931

30-
let mut collector = SourceCollector { dst, cx, emitted_local_sources: FxHashSet::default() };
32+
let mut collector =
33+
SourceCollector { dst, cx, emitted_local_sources: FxHashSet::default(), crate_name };
3134
collector.visit_crate(krate);
3235
Ok(())
3336
}
@@ -115,6 +118,8 @@ struct SourceCollector<'a, 'tcx> {
115118
/// Root destination to place all HTML output into
116119
dst: PathBuf,
117120
emitted_local_sources: FxHashSet<PathBuf>,
121+
122+
crate_name: &'a str,
118123
}
119124

120125
impl DocVisitor for SourceCollector<'_, '_> {
@@ -210,19 +215,22 @@ impl SourceCollector<'_, '_> {
210215
},
211216
);
212217

218+
let src_fname = p.file_name().expect("source has no filename").to_os_string();
219+
let mut fname = src_fname.clone();
220+
213221
let root_path = PathBuf::from("../../").join(root_path.into_inner());
214222
let mut root_path = root_path.to_string_lossy();
215223
if let Some(c) = root_path.as_bytes().last()
216224
&& *c != b'/'
217225
{
218226
root_path += "/";
219227
}
228+
let mut file_path = Path::new(&self.crate_name).join(&*cur.borrow());
229+
file_path.push(&fname);
230+
fname.push(".html");
220231
let mut cur = self.dst.join(cur.into_inner());
221232
shared.ensure_dir(&cur)?;
222233

223-
let src_fname = p.file_name().expect("source has no filename").to_os_string();
224-
let mut fname = src_fname.clone();
225-
fname.push(".html");
226234
cur.push(&fname);
227235

228236
let title = format!("{} - source", src_fname.to_string_lossy());
@@ -250,7 +258,7 @@ impl SourceCollector<'_, '_> {
250258
cx,
251259
&root_path,
252260
highlight::DecorationInfo::default(),
253-
SourceContext::Standalone,
261+
SourceContext::Standalone { file_path },
254262
)
255263
},
256264
&shared.style_files,
@@ -312,10 +320,11 @@ struct ScrapedSource<'a, Code: std::fmt::Display> {
312320
struct Source<Code: std::fmt::Display> {
313321
lines: RangeInclusive<usize>,
314322
code_html: Code,
323+
file_path: Option<(String, String)>,
315324
}
316325

317326
pub(crate) enum SourceContext<'a> {
318-
Standalone,
327+
Standalone { file_path: PathBuf },
319328
Embedded(ScrapedInfo<'a>),
320329
}
321330

@@ -344,9 +353,19 @@ pub(crate) fn print_src(
344353
});
345354
let lines = s.lines().count();
346355
match source_context {
347-
SourceContext::Standalone => {
348-
Source { lines: (1..=lines), code_html: code }.render_into(&mut writer).unwrap()
356+
SourceContext::Standalone { file_path } => Source {
357+
lines: (1..=lines),
358+
code_html: code,
359+
file_path: if let Some(file_name) = file_path.file_name()
360+
&& let Some(file_path) = file_path.parent()
361+
{
362+
Some((file_path.display().to_string(), file_name.display().to_string()))
363+
} else {
364+
None
365+
},
349366
}
367+
.render_into(&mut writer)
368+
.unwrap(),
350369
SourceContext::Embedded(info) => {
351370
let lines = (1 + info.offset)..=(lines + info.offset);
352371
ScrapedSource { info, lines, code_html: code }.render_into(&mut writer).unwrap();

src/librustdoc/html/static/css/noscript.css

+4-1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ nav.sub {
6161
--copy-path-img-hover-filter: invert(35%);
6262
--code-example-button-color: #7f7f7f;
6363
--code-example-button-hover-color: #595959;
64+
--settings-menu-filter: invert(50%);
65+
--settings-menu-hover-filter: invert(35%);
6466
--codeblock-error-hover-color: rgb(255, 0, 0);
6567
--codeblock-error-color: rgba(255, 0, 0, .5);
6668
--codeblock-ignore-hover-color: rgb(255, 142, 0);
@@ -87,7 +89,6 @@ nav.sub {
8789
--search-tab-button-not-selected-background: #e6e6e6;
8890
--search-tab-button-selected-border-top-color: #0089ff;
8991
--search-tab-button-selected-background: #fff;
90-
--settings-menu-filter: none;
9192
--stab-background-color: #fff5d6;
9293
--stab-code-color: #000;
9394
--code-highlight-kw-color: #8959a8;
@@ -192,6 +193,8 @@ nav.sub {
192193
--search-tab-button-not-selected-background: #252525;
193194
--search-tab-button-selected-border-top-color: #0089ff;
194195
--search-tab-button-selected-background: #353535;
196+
--settings-menu-filter: invert(50%);
197+
--settings-menu-hover-filter: invert(65%);
195198
--stab-background-color: #314559;
196199
--stab-code-color: #e6e1cf;
197200
--code-highlight-kw-color: #ab8ac1;

0 commit comments

Comments
 (0)