settings_ui: Add page title label (#39979)

Release Notes:

- N/A
This commit is contained in:
Danilo Leal
2025-10-10 17:29:30 -03:00
committed by GitHub
parent 18405dece8
commit 924e7e61a5
+40 -31
View File
@@ -1784,38 +1784,47 @@ impl SettingsWindow {
.find(|(_, (_, item))| !matches!(item, SettingsPageItem::SectionHeader(_)))
.map(|(index, _)| index);
page_content = page_content.children(items.clone().into_iter().enumerate().map(
|(index, (actual_item_index, item))| {
let no_bottom_border = items
.get(index + 1)
.map(|(_, next_item)| {
matches!(next_item, SettingsPageItem::SectionHeader(_))
})
.unwrap_or(false);
let is_last = Some(index) == last_non_header_index;
page_content = page_content
.when(sub_page_stack().is_empty(), |this| {
this.when_some(
self.navbar_entries
.get(self.navbar_entry)
.map(|entry| entry.title),
|this, title| this.child(Label::new(title).size(LabelSize::Large).mb_3()),
)
})
.children(items.clone().into_iter().enumerate().map(
|(index, (actual_item_index, item))| {
let no_bottom_border = items
.get(index + 1)
.map(|(_, next_item)| {
matches!(next_item, SettingsPageItem::SectionHeader(_))
})
.unwrap_or(false);
let is_last = Some(index) == last_non_header_index;
if let SettingsPageItem::SectionHeader(header) = item {
section_header = Some(*header);
}
v_flex()
.w_full()
.min_w_0()
.id(("settings-page-item", actual_item_index))
.when_some(page_index, |element, page_index| {
element.track_focus(
&self.content_handles[page_index][actual_item_index]
.focus_handle(cx),
)
})
.child(item.render(
self,
section_header.expect("All items rendered after a section header"),
no_bottom_border || is_last,
window,
cx,
))
},
))
if let SettingsPageItem::SectionHeader(header) = item {
section_header = Some(*header);
}
v_flex()
.w_full()
.min_w_0()
.id(("settings-page-item", actual_item_index))
.when_some(page_index, |element, page_index| {
element.track_focus(
&self.content_handles[page_index][actual_item_index]
.focus_handle(cx),
)
})
.child(item.render(
self,
section_header.expect("All items rendered after a section header"),
no_bottom_border || is_last,
window,
cx,
))
},
))
}
page_content
}