Revert the space filters Toggle and instead don't try to use glass when in the sidebar.

This reverts commit 283029b14976cda1aa567c947c27b09916c88824.
This commit is contained in:
Doug
2026-04-17 12:59:55 +01:00
committed by Doug
parent ab61e8ab3d
commit 16fce556b6
2 changed files with 40 additions and 9 deletions
@@ -326,6 +326,11 @@ import SwiftUI
} }
} }
extension EnvironmentValues {
/// Whether or not the current view is part of the sidebar module of a `NavigationSplitCoordinator`.
@Entry var isInSidebar = false
}
private struct NavigationSplitCoordinatorView: View { private struct NavigationSplitCoordinatorView: View {
@State private var columnVisibility = NavigationSplitViewVisibility.all @State private var columnVisibility = NavigationSplitViewVisibility.all
@@ -381,9 +386,11 @@ private struct NavigationSplitCoordinatorView: View {
NavigationSplitView(columnVisibility: $columnVisibility) { NavigationSplitView(columnVisibility: $columnVisibility) {
if let sidebarModule = navigationSplitCoordinator.sidebarModule { if let sidebarModule = navigationSplitCoordinator.sidebarModule {
sidebarModule.coordinator?.toPresentable() sidebarModule.coordinator?.toPresentable()
.environment(\.isInSidebar, true)
.id(sidebarModule.id) .id(sidebarModule.id)
} else { } else {
navigationSplitCoordinator.placeholderModule.coordinator?.toPresentable() navigationSplitCoordinator.placeholderModule.coordinator?.toPresentable()
.environment(\.isInSidebar, true)
.id(navigationSplitCoordinator.placeholderModule.id) .id(navigationSplitCoordinator.placeholderModule.id)
} }
} detail: { } detail: {
@@ -127,22 +127,46 @@ struct HomeScreen: View {
} }
private struct SpaceFiltersButton: View { private struct SpaceFiltersButton: View {
@Environment(\.isInSidebar) private var isInSidebar
var selected = false var selected = false
var action: () -> Void var action: () -> Void
var body: some View { /// Design prefers the custom style over the system's styling of a Toggle within a toolbar,
// Use a Toggle to let the system handle the selection style for both the Liquid Glass /// however Glass isn't supported for toolbar buttons in the sidebar on iPadOS 26 (likely due
// button on iPhone, along with the plain button used in the sidebar on iPad/Mac. /// to glass on glass being discouraged by Apple), so we need to handle our styling accordingly.
Toggle(isOn: .constant(selected)) { var shouldUseGlassButtonStyle: Bool {
CompoundIcon(\.filter) !isInSidebar
.foregroundStyle(selected ? .compound.iconOnSolidPrimary : .compound.iconPrimary)
} }
.overlay {
// The tap gesture is ignored when applied to the toggle so apply it to an overlay instead. var body: some View {
Color.black.opacity(0.001) if #available(iOS 26, *), shouldUseGlassButtonStyle {
.onTapGesture(perform: action) if selected {
content
.backportButtonStyleGlassProminent()
.tint(.compound.bgActionPrimaryRest)
} else {
content
}
} else {
if selected {
content
.buttonStyle(.compound(.primary, size: .toolbarIcon))
} else {
content
.buttonStyle(.compound(.tertiary, size: .toolbarIcon))
}
}
}
private var content: some View {
Button {
action()
} label: {
CompoundIcon(\.filter)
} }
.accessibilityLabel(L10n.screenRoomlistYourSpaces) .accessibilityLabel(L10n.screenRoomlistYourSpaces)
.accessibilityAddTraits(selected ? .isSelected : [])
.accessibilityIdentifier(A11yIdentifiers.homeScreen.spaceFilters) .accessibilityIdentifier(A11yIdentifiers.homeScreen.spaceFilters)
} }
} }