mirror of
https://github.com/yattee/yattee.git
synced 2026-10-24 13:42:54 +00:00
Hide toolbar account switchers where the sidebar already shows one
This commit is contained in:
@@ -256,6 +256,20 @@ enum DataContextSwitcherVisibility {
|
||||
guard let appEnvironment else { return false }
|
||||
return appEnvironment.settingsManager.showAccountPickers && showsSwitcher(in: appEnvironment)
|
||||
}
|
||||
|
||||
#if os(iOS)
|
||||
/// The iOS toolbar menus: same rule again, minus the regular widths, where
|
||||
/// the sidebar layout already pins the switcher in its bottom bar — a
|
||||
/// toolbar button there would say the same thing twice, the way macOS
|
||||
/// toolbars already leave it to the sidebar row.
|
||||
@MainActor
|
||||
static func showsToolbarPickers(
|
||||
in appEnvironment: AppEnvironment?,
|
||||
horizontalSizeClass: UserInterfaceSizeClass?
|
||||
) -> Bool {
|
||||
horizontalSizeClass == .compact && showsPickers(in: appEnvironment)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// MARK: - Glyph
|
||||
|
||||
@@ -9,6 +9,9 @@ import SwiftUI
|
||||
|
||||
struct HistoryListView: View {
|
||||
@Environment(\.appEnvironment) private var appEnvironment
|
||||
#if os(iOS)
|
||||
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
|
||||
#endif
|
||||
@Namespace private var sheetTransition
|
||||
|
||||
/// One row, from whichever history the screen is reading.
|
||||
@@ -331,10 +334,11 @@ struct HistoryListView: View {
|
||||
ToolbarSpacer(.flexible, placement: .primaryAction)
|
||||
}
|
||||
#endif
|
||||
// No switcher on macOS: the sidebar row is the one persistent
|
||||
// switcher surface there.
|
||||
// No switcher wherever a sidebar shows one: the macOS sidebar row
|
||||
// and the iPad sidebar's bottom bar are the persistent switcher
|
||||
// surfaces there, so the toolbar menu is compact-width-only.
|
||||
#if !os(macOS)
|
||||
if DataContextSwitcherVisibility.showsPickers(in: appEnvironment) {
|
||||
if DataContextSwitcherVisibility.showsToolbarPickers(in: appEnvironment, horizontalSizeClass: horizontalSizeClass) {
|
||||
ToolbarItem(placement: viewOptionsPlacement) {
|
||||
DataContextSwitcherMenu()
|
||||
}
|
||||
|
||||
@@ -9,6 +9,9 @@ import SwiftUI
|
||||
|
||||
struct HomeView: View {
|
||||
@Environment(\.appEnvironment) private var appEnvironment
|
||||
#if os(iOS)
|
||||
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
|
||||
#endif
|
||||
@Environment(\.scenePhase) private var scenePhase
|
||||
#if !os(tvOS) && !os(macOS)
|
||||
@Namespace private var sheetTransition
|
||||
@@ -166,10 +169,11 @@ struct HomeView: View {
|
||||
.toolbarTitleDisplayMode(.inlineLarge)
|
||||
#endif
|
||||
.toolbar {
|
||||
// No switcher on macOS: the sidebar row is the one persistent
|
||||
// switcher surface there.
|
||||
// No switcher wherever a sidebar shows one: the macOS sidebar row
|
||||
// and the iPad sidebar's bottom bar are the persistent switcher
|
||||
// surfaces there, so the toolbar menu is compact-width-only.
|
||||
#if !os(tvOS) && !os(macOS)
|
||||
if DataContextSwitcherVisibility.showsPickers(in: appEnvironment) {
|
||||
if DataContextSwitcherVisibility.showsToolbarPickers(in: appEnvironment, horizontalSizeClass: horizontalSizeClass) {
|
||||
ToolbarItem(placement: .primaryAction) {
|
||||
DataContextSwitcherMenu()
|
||||
}
|
||||
|
||||
@@ -9,6 +9,9 @@ import SwiftUI
|
||||
|
||||
struct PlaylistsListView: View {
|
||||
@Environment(\.appEnvironment) private var appEnvironment
|
||||
#if os(iOS)
|
||||
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
|
||||
#endif
|
||||
@Namespace private var sheetTransition
|
||||
@State private var localPlaylists: [LocalPlaylist] = []
|
||||
@State private var searchText = ""
|
||||
@@ -229,10 +232,11 @@ struct PlaylistsListView: View {
|
||||
ToolbarSpacer(.flexible, placement: .primaryAction)
|
||||
}
|
||||
#endif
|
||||
// No switcher on macOS: the sidebar row is the one persistent
|
||||
// switcher surface there.
|
||||
// No switcher wherever a sidebar shows one: the macOS sidebar row
|
||||
// and the iPad sidebar's bottom bar are the persistent switcher
|
||||
// surfaces there, so the toolbar menu is compact-width-only.
|
||||
#if !os(macOS)
|
||||
if DataContextSwitcherVisibility.showsPickers(in: appEnvironment) {
|
||||
if DataContextSwitcherVisibility.showsToolbarPickers(in: appEnvironment, horizontalSizeClass: horizontalSizeClass) {
|
||||
ToolbarItem(placement: viewOptionsPlacement) {
|
||||
DataContextSwitcherMenu()
|
||||
}
|
||||
|
||||
@@ -492,10 +492,12 @@ struct SubscriptionsView: View {
|
||||
.toolbarTitleDisplayMode(.inlineLarge)
|
||||
#endif
|
||||
.toolbar {
|
||||
// No switcher on macOS: the sidebar row is the one persistent
|
||||
// switcher surface there.
|
||||
// No switcher wherever a sidebar shows one: the macOS
|
||||
// sidebar row and the iPad sidebar's bottom bar are the
|
||||
// persistent switcher surfaces there, so the toolbar menu
|
||||
// is compact-width-only.
|
||||
#if !os(macOS)
|
||||
if DataContextSwitcherVisibility.showsPickers(in: appEnvironment) {
|
||||
if DataContextSwitcherVisibility.showsToolbarPickers(in: appEnvironment, horizontalSizeClass: horizontalSizeClass) {
|
||||
ToolbarItem(placement: viewOptionsPlacement) {
|
||||
DataContextSwitcherMenu()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user