Make every tvOS switcher a menu and retire the full-screen picker

The header button and the settings row both raised a fullScreenCover to
pick a context; a Menu offers the same rows in place for one click,
matching the pickers elsewhere in Settings. With every presentation now
a menu, the picker view and the rows' inMenu flag had nothing left to
serve. The subscriptions header also cedes its width to the account
name: the view-options button keeps only its icon, since two full
titles wrapped into tall two-line lozenges in the tvOS sidebar.
This commit is contained in:
Arkadiusz Fal
2026-09-14 18:59:00 +02:00
parent ded53d7962
commit 50e32dbe5a
2 changed files with 20 additions and 55 deletions

View File

@@ -906,12 +906,18 @@ struct SubscriptionsView: View {
#if os(tvOS)
private var tvOSViewOptionsButton: some View {
HStack(spacing: 16) {
// The sidebar is too narrow for both buttons' full titles, and
// tvOS wraps them into tall two-line lozenges before truncating.
// The account name is the label worth keeping whole, so this
// button keeps only its icon and the name gets the width.
Button {
showViewOptions = true
} label: {
Label(String(localized: "viewOptions.title"), systemImage: "slider.horizontal.3")
.labelStyle(.iconOnly)
}
.buttonStyle(.bordered)
.accessibilityLabel(Text(String(localized: "viewOptions.title")))
if DataContextSwitcherVisibility.showsPickers(in: appEnvironment) {
DataContextSwitcherButton()