From 2eb9e6372444f13f1cccc64464fda62b705acd9c Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sat, 6 May 2023 14:28:12 -0400 Subject: [PATCH] Make language picker sheet half-height, fix appearance in non-pure-black dark mode --- .../ComposeUI/Controllers/ComposeController.swift | 11 +++++++++++ .../Sources/ComposeUI/Views/LanguagePicker.swift | 9 +++++++++ 2 files changed, 20 insertions(+) diff --git a/Packages/ComposeUI/Sources/ComposeUI/Controllers/ComposeController.swift b/Packages/ComposeUI/Sources/ComposeUI/Controllers/ComposeController.swift index fab135b5..988463c5 100644 --- a/Packages/ComposeUI/Sources/ComposeUI/Controllers/ComposeController.swift +++ b/Packages/ComposeUI/Sources/ComposeUI/Controllers/ComposeController.swift @@ -119,6 +119,7 @@ public final class ComposeController: ViewController { .environment(\.managedObjectContext, DraftsPersistentContainer.shared.viewContext) .environmentObject(draft) .environmentObject(mastodonController.instanceFeatures) + .environment(\.composeUIConfig, config) } public func canPaste(itemProviders: [NSItemProvider]) -> Bool { @@ -450,3 +451,13 @@ private struct GlobalFrameOutsideListPrefKey: PreferenceKey { value = nextValue() } } + +private struct ComposeUIConfigEnvironmentKey: EnvironmentKey { + static let defaultValue = ComposeUIConfig() +} +extension EnvironmentValues { + var composeUIConfig: ComposeUIConfig { + get { self[ComposeUIConfigEnvironmentKey.self] } + set { self[ComposeUIConfigEnvironmentKey.self] = newValue } + } +} diff --git a/Packages/ComposeUI/Sources/ComposeUI/Views/LanguagePicker.swift b/Packages/ComposeUI/Sources/ComposeUI/Views/LanguagePicker.swift index aa9a8f99..22eb211b 100644 --- a/Packages/ComposeUI/Sources/ComposeUI/Views/LanguagePicker.swift +++ b/Packages/ComposeUI/Sources/ComposeUI/Views/LanguagePicker.swift @@ -69,6 +69,7 @@ struct LanguagePicker: View { NavigationStack { LanguagePickerList(languageCode: languageCode, hasChangedSelection: $hasChangedSelection, isPresented: $isShowingSheet) } + .presentationDetents([.large, .medium]) } } } @@ -78,6 +79,8 @@ private struct LanguagePickerList: View { @Binding var languageCode: Locale.LanguageCode @Binding var hasChangedSelection: Bool @Binding var isPresented: Bool + @Environment(\.composeUIConfig.groupedBackgroundColor) private var groupedBackgroundColor + @Environment(\.composeUIConfig.groupedCellBackgroundColor) private var groupedCellBackgroundColor @State private var recentLangs: [Lang] = [] @State private var langs: [Lang] = [] @State private var filteredLangs: [Lang]? @@ -102,6 +105,7 @@ private struct LanguagePickerList: View { ForEach(recentLangs) { lang in button(for: lang) } + .listRowBackground(groupedCellBackgroundColor) } header: { Text("Recently Used") } @@ -110,11 +114,16 @@ private struct LanguagePickerList: View { ForEach(filteredLangs ?? langs) { lang in button(for: lang) } + .listRowBackground(groupedCellBackgroundColor) } header: { Text("All Languages") } } + .listStyle(.insetGrouped) + .scrollContentBackground(.hidden) + .background(groupedBackgroundColor.edgesIgnoringSafeArea(.all)) .searchable(text: $query) + .scrollDismissesKeyboard(.interactively) .navigationTitle("Post Language") .navigationBarTitleDisplayMode(.inline) .toolbar {