Skip to content

Commit 456ebd3

Browse files
Rollup merge of rust-lang#87210 - notriddle:notriddle/rustdoc-sidebar-headers, r=GuillaumeGomez
Rustdoc accessibility: make the sidebar headers actual headers Part of rust-lang#87059 Preview it at: https://notriddle.com/notriddle-rustdoc-test/rustdoc-sidebar-header/std/index.html
2 parents 0fce468 + 1941764 commit 456ebd3

File tree

9 files changed

+45
-41
lines changed

9 files changed

+45
-41
lines changed

src/librustdoc/html/render/context.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,7 @@ impl<'tcx> FormatRenderer<'tcx> for Context<'tcx> {
539539
};
540540
let sidebar = if let Some(ref version) = self.cache.crate_version {
541541
format!(
542-
"<p class=\"location\">Crate {}</p>\
542+
"<h2 class=\"location\">Crate {}</h2>\
543543
<div class=\"block version\">\
544544
<p>Version {}</p>\
545545
</div>\
@@ -567,7 +567,7 @@ impl<'tcx> FormatRenderer<'tcx> for Context<'tcx> {
567567
page.root_path = "./";
568568

569569
let mut style_files = self.shared.style_files.clone();
570-
let sidebar = "<p class=\"location\">Settings</p><div class=\"sidebar-elems\"></div>";
570+
let sidebar = "<h2 class=\"location\">Settings</h2><div class=\"sidebar-elems\"></div>";
571571
style_files.push(StylePath { path: PathBuf::from("settings.css"), disabled: false });
572572
let v = layout::render(
573573
&self.shared.templates,

src/librustdoc/html/render/mod.rs

+27-27
Original file line numberDiff line numberDiff line change
@@ -1654,7 +1654,7 @@ fn print_sidebar(cx: &Context<'_>, it: &clean::Item, buffer: &mut Buffer) {
16541654
{
16551655
write!(
16561656
buffer,
1657-
"<p class=\"location\">{}{}</p>",
1657+
"<h2 class=\"location\">{}{}</h2>",
16581658
match *it.kind {
16591659
clean::StructItem(..) => "Struct ",
16601660
clean::TraitItem(..) => "Trait ",
@@ -1718,7 +1718,7 @@ fn print_sidebar(cx: &Context<'_>, it: &clean::Item, buffer: &mut Buffer) {
17181718
// to navigate the documentation (though slightly inefficiently).
17191719

17201720
if !it.is_mod() {
1721-
buffer.write_str("<p class=\"location\">Other items in<br>");
1721+
buffer.write_str("<h2 class=\"location\">Other items in<br>");
17221722
for (i, name) in cx.current.iter().take(parentlen).enumerate() {
17231723
if i > 0 {
17241724
buffer.write_str("::<wbr>");
@@ -1730,7 +1730,7 @@ fn print_sidebar(cx: &Context<'_>, it: &clean::Item, buffer: &mut Buffer) {
17301730
*name
17311731
);
17321732
}
1733-
buffer.write_str("</p>");
1733+
buffer.write_str("</h2>");
17341734
}
17351735

17361736
// Sidebar refers to the enclosing module, not this module.
@@ -1841,7 +1841,7 @@ fn sidebar_assoc_items(cx: &Context<'_>, out: &mut Buffer, it: &clean::Item) {
18411841
ret.sort();
18421842

18431843
out.push_str(
1844-
"<a class=\"sidebar-title\" href=\"#implementations\">Methods</a>\
1844+
"<h3 class=\"sidebar-title\"><a href=\"#implementations\">Methods</a></h3>\
18451845
<div class=\"sidebar-links\">",
18461846
);
18471847
for line in ret {
@@ -1906,24 +1906,24 @@ fn sidebar_assoc_items(cx: &Context<'_>, out: &mut Buffer, it: &clean::Item) {
19061906

19071907
if !concrete_format.is_empty() {
19081908
out.push_str(
1909-
"<a class=\"sidebar-title\" href=\"#trait-implementations\">\
1910-
Trait Implementations</a>",
1909+
"<h3 class=\"sidebar-title\"><a href=\"#trait-implementations\">\
1910+
Trait Implementations</a></h3>",
19111911
);
19121912
write_sidebar_links(out, concrete_format);
19131913
}
19141914

19151915
if !synthetic_format.is_empty() {
19161916
out.push_str(
1917-
"<a class=\"sidebar-title\" href=\"#synthetic-implementations\">\
1918-
Auto Trait Implementations</a>",
1917+
"<h3 class=\"sidebar-title\"><a href=\"#synthetic-implementations\">\
1918+
Auto Trait Implementations</a></h3>",
19191919
);
19201920
write_sidebar_links(out, synthetic_format);
19211921
}
19221922

19231923
if !blanket_format.is_empty() {
19241924
out.push_str(
1925-
"<a class=\"sidebar-title\" href=\"#blanket-implementations\">\
1926-
Blanket Implementations</a>",
1925+
"<h3 class=\"sidebar-title\"><a href=\"#blanket-implementations\">\
1926+
Blanket Implementations</a></h3>",
19271927
);
19281928
write_sidebar_links(out, blanket_format);
19291929
}
@@ -1975,7 +1975,7 @@ fn sidebar_deref_methods(cx: &Context<'_>, out: &mut Buffer, impl_: &Impl, v: &V
19751975
if !ret.is_empty() {
19761976
write!(
19771977
out,
1978-
"<a class=\"sidebar-title\" href=\"#deref-methods\">Methods from {}&lt;Target={}&gt;</a>",
1978+
"<h3 class=\"sidebar-title\"><a href=\"#deref-methods\">Methods from {}&lt;Target={}&gt;</a></h3>",
19791979
Escape(&format!("{:#}", impl_.inner_impl().trait_.as_ref().unwrap().print(cx))),
19801980
Escape(&format!("{:#}", real_target.print(cx))),
19811981
);
@@ -1998,7 +1998,7 @@ fn sidebar_struct(cx: &Context<'_>, buf: &mut Buffer, it: &clean::Item, s: &clea
19981998
if !fields.is_empty() {
19991999
if let CtorKind::Fictive = s.struct_type {
20002000
sidebar.push_str(
2001-
"<a class=\"sidebar-title\" href=\"#fields\">Fields</a>\
2001+
"<h3 class=\"sidebar-title\"><a href=\"#fields\">Fields</a></h3>\
20022002
<div class=\"sidebar-links\">",
20032003
);
20042004

@@ -2075,8 +2075,8 @@ fn sidebar_trait(cx: &Context<'_>, buf: &mut Buffer, it: &clean::Item, t: &clean
20752075
print_sidebar_section(
20762076
buf,
20772077
&t.items,
2078-
"<a class=\"sidebar-title\" href=\"#associated-types\">\
2079-
Associated Types</a><div class=\"sidebar-links\">",
2078+
"<h3 class=\"sidebar-title\"><a href=\"#associated-types\">\
2079+
Associated Types</a></h3><div class=\"sidebar-links\">",
20802080
|m| m.is_associated_type(),
20812081
|out, sym| write!(out, "<a href=\"#associatedtype.{0}\">{0}</a>", sym),
20822082
"</div>",
@@ -2085,8 +2085,8 @@ fn sidebar_trait(cx: &Context<'_>, buf: &mut Buffer, it: &clean::Item, t: &clean
20852085
print_sidebar_section(
20862086
buf,
20872087
&t.items,
2088-
"<a class=\"sidebar-title\" href=\"#associated-const\">\
2089-
Associated Constants</a><div class=\"sidebar-links\">",
2088+
"<h3 class=\"sidebar-title\"><a href=\"#associated-const\">\
2089+
Associated Constants</a></h3><div class=\"sidebar-links\">",
20902090
|m| m.is_associated_const(),
20912091
|out, sym| write!(out, "<a href=\"#associatedconstant.{0}\">{0}</a>", sym),
20922092
"</div>",
@@ -2095,8 +2095,8 @@ fn sidebar_trait(cx: &Context<'_>, buf: &mut Buffer, it: &clean::Item, t: &clean
20952095
print_sidebar_section(
20962096
buf,
20972097
&t.items,
2098-
"<a class=\"sidebar-title\" href=\"#required-methods\">\
2099-
Required Methods</a><div class=\"sidebar-links\">",
2098+
"<h3 class=\"sidebar-title\"><a href=\"#required-methods\">\
2099+
Required Methods</a></h3><div class=\"sidebar-links\">",
21002100
|m| m.is_ty_method(),
21012101
|out, sym| write!(out, "<a href=\"#tymethod.{0}\">{0}</a>", sym),
21022102
"</div>",
@@ -2105,8 +2105,8 @@ fn sidebar_trait(cx: &Context<'_>, buf: &mut Buffer, it: &clean::Item, t: &clean
21052105
print_sidebar_section(
21062106
buf,
21072107
&t.items,
2108-
"<a class=\"sidebar-title\" href=\"#provided-methods\">\
2109-
Provided Methods</a><div class=\"sidebar-links\">",
2108+
"<h3 class=\"sidebar-title\"><a href=\"#provided-methods\">\
2109+
Provided Methods</a></h3><div class=\"sidebar-links\">",
21102110
|m| m.is_method(),
21112111
|out, sym| write!(out, "<a href=\"#method.{0}\">{0}</a>", sym),
21122112
"</div>",
@@ -2128,8 +2128,8 @@ fn sidebar_trait(cx: &Context<'_>, buf: &mut Buffer, it: &clean::Item, t: &clean
21282128
if !res.is_empty() {
21292129
res.sort();
21302130
buf.push_str(
2131-
"<a class=\"sidebar-title\" href=\"#foreign-impls\">\
2132-
Implementations on Foreign Types</a>\
2131+
"<h3 class=\"sidebar-title\"><a href=\"#foreign-impls\">\
2132+
Implementations on Foreign Types</a></h3>\
21332133
<div class=\"sidebar-links\">",
21342134
);
21352135
for (name, id) in res.into_iter() {
@@ -2141,11 +2141,11 @@ fn sidebar_trait(cx: &Context<'_>, buf: &mut Buffer, it: &clean::Item, t: &clean
21412141

21422142
sidebar_assoc_items(cx, buf, it);
21432143

2144-
buf.push_str("<a class=\"sidebar-title\" href=\"#implementors\">Implementors</a>");
2144+
buf.push_str("<h3 class=\"sidebar-title\"><a href=\"#implementors\">Implementors</a></h3>");
21452145
if t.is_auto {
21462146
buf.push_str(
2147-
"<a class=\"sidebar-title\" \
2148-
href=\"#synthetic-implementors\">Auto Implementors</a>",
2147+
"<h3 class=\"sidebar-title\"><a \
2148+
href=\"#synthetic-implementors\">Auto Implementors</a></h3>",
21492149
);
21502150
}
21512151

@@ -2188,7 +2188,7 @@ fn sidebar_union(cx: &Context<'_>, buf: &mut Buffer, it: &clean::Item, u: &clean
21882188

21892189
if !fields.is_empty() {
21902190
sidebar.push_str(
2191-
"<a class=\"sidebar-title\" href=\"#fields\">Fields</a>\
2191+
"<h3 class=\"sidebar-title\"><a href=\"#fields\">Fields</a></h3>\
21922192
<div class=\"sidebar-links\">",
21932193
);
21942194

@@ -2220,7 +2220,7 @@ fn sidebar_enum(cx: &Context<'_>, buf: &mut Buffer, it: &clean::Item, e: &clean:
22202220
if !variants.is_empty() {
22212221
variants.sort_unstable();
22222222
sidebar.push_str(&format!(
2223-
"<a class=\"sidebar-title\" href=\"#variants\">Variants</a>\
2223+
"<h3 class=\"sidebar-title\"><a href=\"#variants\">Variants</a></h3>\
22242224
<div class=\"sidebar-links\">{}</div>",
22252225
variants.join(""),
22262226
));

src/librustdoc/html/static/css/rustdoc.css

+4
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,8 @@ nav.sub {
342342
margin: 30px 10px 20px 10px;
343343
text-align: center;
344344
word-wrap: break-word;
345+
font-weight: inherit;
346+
padding: 0;
345347
}
346348

347349
.sidebar .version {
@@ -394,6 +396,8 @@ nav.sub {
394396
text-align: center;
395397
font-size: 17px;
396398
margin-bottom: 5px;
399+
font-weight: inherit;
400+
padding: 0;
397401
}
398402

399403
.sidebar-links {

src/test/rustdoc-gui/sidebar-mobile.goml

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ click: ".sidebar-menu"
1313
assert-css: (".sidebar-elems", {"display": "block", "left": "-246px"})
1414
// Force the sidebar open by focusing a link inside it.
1515
// This makes it easier for keyboard users to get to it.
16-
focus: ".sidebar-title"
16+
focus: ".sidebar-title a"
1717
assert-css: (".sidebar-elems", {"display": "block", "left": "0px"})
1818
// When we tab out of the sidebar, close it.
1919
focus: ".search-input"

src/test/rustdoc/deref-typedef.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// @has '-' '//*[@class="impl-items"]//*[@id="method.foo_b"]' 'pub fn foo_b(&self)'
77
// @has '-' '//*[@class="impl-items"]//*[@id="method.foo_c"]' 'pub fn foo_c(&self)'
88
// @has '-' '//*[@class="impl-items"]//*[@id="method.foo_j"]' 'pub fn foo_j(&self)'
9-
// @has '-' '//*[@class="sidebar-title"][@href="#deref-methods"]' 'Methods from Deref<Target=FooJ>'
9+
// @has '-' '//*[@class="sidebar-title"]/a[@href="#deref-methods"]' 'Methods from Deref<Target=FooJ>'
1010
// @has '-' '//*[@class="sidebar-links"]/a[@href="#method.foo_a"]' 'foo_a'
1111
// @has '-' '//*[@class="sidebar-links"]/a[@href="#method.foo_b"]' 'foo_b'
1212
// @has '-' '//*[@class="sidebar-links"]/a[@href="#method.foo_c"]' 'foo_c'

src/test/rustdoc/negative-impl-sidebar.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44
pub struct Foo;
55

66
// @has foo/struct.Foo.html
7-
// @has - '//*[@class="sidebar-title"][@href="#trait-implementations"]' 'Trait Implementations'
7+
// @has - '//*[@class="sidebar-title"]/a[@href="#trait-implementations"]' 'Trait Implementations'
88
// @has - '//*[@class="sidebar-links"]/a' '!Sync'
99
impl !Sync for Foo {}

src/test/rustdoc/sidebar-items.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
#![crate_name = "foo"]
22

33
// @has foo/trait.Foo.html
4-
// @has - '//*[@class="sidebar-title"][@href="#required-methods"]' 'Required Methods'
4+
// @has - '//*[@class="sidebar-title"]/a[@href="#required-methods"]' 'Required Methods'
55
// @has - '//*[@class="sidebar-links"]/a' 'bar'
6-
// @has - '//*[@class="sidebar-title"][@href="#provided-methods"]' 'Provided Methods'
6+
// @has - '//*[@class="sidebar-title"]/a[@href="#provided-methods"]' 'Provided Methods'
77
// @has - '//*[@class="sidebar-links"]/a' 'foo'
8-
// @has - '//*[@class="sidebar-title"][@href="#associated-const"]' 'Associated Constants'
8+
// @has - '//*[@class="sidebar-title"]/a[@href="#associated-const"]' 'Associated Constants'
99
// @has - '//*[@class="sidebar-links"]/a' 'BAR'
10-
// @has - '//*[@class="sidebar-title"][@href="#associated-types"]' 'Associated Types'
10+
// @has - '//*[@class="sidebar-title"]/a[@href="#associated-types"]' 'Associated Types'
1111
// @has - '//*[@class="sidebar-links"]/a' 'Output'
1212
pub trait Foo {
1313
const BAR: u32 = 0;
@@ -18,7 +18,7 @@ pub trait Foo {
1818
}
1919

2020
// @has foo/struct.Bar.html
21-
// @has - '//*[@class="sidebar-title"][@href="#fields"]' 'Fields'
21+
// @has - '//*[@class="sidebar-title"]/a[@href="#fields"]' 'Fields'
2222
// @has - '//*[@class="sidebar-links"]/a[@href="#structfield.f"]' 'f'
2323
// @has - '//*[@class="sidebar-links"]/a[@href="#structfield.u"]' 'u'
2424
// @!has - '//*[@class="sidebar-links"]/a' 'waza'
@@ -29,7 +29,7 @@ pub struct Bar {
2929
}
3030

3131
// @has foo/enum.En.html
32-
// @has - '//*[@class="sidebar-title"][@href="#variants"]' 'Variants'
32+
// @has - '//*[@class="sidebar-title"]/a[@href="#variants"]' 'Variants'
3333
// @has - '//*[@class="sidebar-links"]/a' 'foo'
3434
// @has - '//*[@class="sidebar-links"]/a' 'bar'
3535
pub enum En {
@@ -38,7 +38,7 @@ pub enum En {
3838
}
3939

4040
// @has foo/union.MyUnion.html
41-
// @has - '//*[@class="sidebar-title"][@href="#fields"]' 'Fields'
41+
// @has - '//*[@class="sidebar-title"]/a[@href="#fields"]' 'Fields'
4242
// @has - '//*[@class="sidebar-links"]/a[@href="#structfield.f1"]' 'f1'
4343
// @has - '//*[@class="sidebar-links"]/a[@href="#structfield.f2"]' 'f2'
4444
// @!has - '//*[@class="sidebar-links"]/a' 'waza'

src/test/rustdoc/sidebar-links-to-foreign-impl.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#![crate_name = "foo"]
44

55
// @has foo/trait.Foo.html
6-
// @has - '//*[@class="sidebar-title"][@href="#foreign-impls"]' 'Implementations on Foreign Types'
6+
// @has - '//*[@class="sidebar-title"]/a[@href="#foreign-impls"]' 'Implementations on Foreign Types'
77
// @has - '//h2[@id="foreign-impls"]' 'Implementations on Foreign Types'
88
// @has - '//*[@class="sidebar-links"]/a[@href="#impl-Foo-for-u32"]' 'u32'
99
// @has - '//div[@id="impl-Foo-for-u32"]//code' 'impl Foo for u32'

src/test/rustdoc/typedef.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ impl MyStruct {
1212
// @has - '//*[@class="impl has-srclink"]//code' 'impl MyAlias'
1313
// @has - '//*[@class="impl has-srclink"]//code' 'impl MyTrait for MyAlias'
1414
// @has - 'Alias docstring'
15-
// @has - '//*[@class="sidebar"]//p[@class="location"]' 'Type Definition MyAlias'
15+
// @has - '//*[@class="sidebar"]//*[@class="location"]' 'Type Definition MyAlias'
1616
// @has - '//*[@class="sidebar"]//a[@href="#implementations"]' 'Methods'
1717
// @has - '//*[@class="sidebar"]//a[@href="#trait-implementations"]' 'Trait Implementations'
1818
/// Alias docstring

0 commit comments

Comments
 (0)