mirror of
https://github.com/FBukovina/Atoll.git
synced 2026-10-27 23:24:32 +00:00
Merge branch 'main' of https://github.com/Ebullioscopic/Atoll into pr-440
This commit is contained in:
commit
b31bab2b4d
14 changed files with 1447 additions and 99 deletions
|
|
@ -36,10 +36,12 @@ struct DynamicIslandHeader: View {
|
|||
@Default(.showClipboardIcon) var showClipboardIcon
|
||||
@Default(.showColorPickerIcon) var showColorPickerIcon
|
||||
@Default(.clipboardDisplayMode) var clipboardDisplayMode
|
||||
@Default(.showBatteryIndicator) var showBatteryIndicator
|
||||
@Default(.enableMinimalisticUI) var enableMinimalisticUI
|
||||
|
||||
var body: some View {
|
||||
HStack(spacing: 0) {
|
||||
if !Defaults[.enableMinimalisticUI] {
|
||||
if !enableMinimalisticUI {
|
||||
HStack {
|
||||
let shouldShowTabs = coordinator.alwaysShowTabs || vm.notchState == .open || !shelfState.items.isEmpty
|
||||
if shouldShowTabs {
|
||||
|
|
@ -55,7 +57,7 @@ struct DynamicIslandHeader: View {
|
|||
|
||||
}
|
||||
|
||||
if vm.notchState == .open && !Defaults[.enableMinimalisticUI] {
|
||||
if vm.notchState == .open && !enableMinimalisticUI {
|
||||
let spacerWidth = min(vm.closedNotchSize.width, 300)
|
||||
Rectangle()
|
||||
.fill(NSScreen.screens
|
||||
|
|
@ -67,7 +69,7 @@ struct DynamicIslandHeader: View {
|
|||
}
|
||||
|
||||
HStack(spacing: 4) {
|
||||
if vm.notchState == .open && !Defaults[.enableMinimalisticUI] {
|
||||
if vm.notchState == .open && !enableMinimalisticUI {
|
||||
if Defaults[.showMirror] {
|
||||
Button(action: {
|
||||
vm.toggleCameraPreview()
|
||||
|
|
@ -230,7 +232,7 @@ struct DynamicIslandHeader: View {
|
|||
|
||||
|
||||
|
||||
if Defaults[.showBatteryIndicator] {
|
||||
if showBatteryIndicator {
|
||||
DynamicIslandBatteryView(
|
||||
batteryWidth: 30,
|
||||
isCharging: batteryModel.isCharging,
|
||||
|
|
|
|||
|
|
@ -86,9 +86,39 @@ struct NotchTerminalView: View {
|
|||
@ObservedObject var terminalManager = TerminalManager.shared
|
||||
@EnvironmentObject var vm: DynamicIslandViewModel
|
||||
@Default(.enableTerminalFeature) var enableTerminalFeature
|
||||
@Default(.cornerRadiusScaling) var cornerRadiusScaling
|
||||
@Default(.enableMinimalisticUI) var enableMinimalisticUI
|
||||
@State private var suppressionToken = UUID()
|
||||
@State private var isSuppressing = false
|
||||
|
||||
/// Top corners stay mild; bottom follows shell − padding (see `notchTerminalBottomCornerRadii`).
|
||||
private static let terminalClipTopCornerRadius: CGFloat = 6
|
||||
|
||||
private var currentScreenName: String {
|
||||
vm.screen ?? DynamicIslandViewCoordinator.shared.selectedScreen
|
||||
}
|
||||
|
||||
private var isDynamicIslandMode: Bool {
|
||||
shouldUseDynamicIslandMode(for: currentScreenName)
|
||||
}
|
||||
|
||||
private var terminalClipShape: UnevenRoundedRectangle {
|
||||
let innerBottom = notchTerminalBottomCornerRadii(
|
||||
isDynamicIslandMode: isDynamicIslandMode,
|
||||
notchState: vm.notchState,
|
||||
cornerRadiusScaling: cornerRadiusScaling,
|
||||
enableMinimalisticUI: enableMinimalisticUI,
|
||||
closedNotchHeight: vm.closedNotchSize.height
|
||||
).innerBottom
|
||||
return UnevenRoundedRectangle(
|
||||
topLeadingRadius: Self.terminalClipTopCornerRadius,
|
||||
bottomLeadingRadius: innerBottom,
|
||||
bottomTrailingRadius: innerBottom,
|
||||
topTrailingRadius: Self.terminalClipTopCornerRadius,
|
||||
style: .continuous
|
||||
)
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
VStack(spacing: 0) {
|
||||
if enableTerminalFeature {
|
||||
|
|
@ -121,15 +151,20 @@ struct NotchTerminalView: View {
|
|||
.padding(.bottom, 4)
|
||||
|
||||
Divider()
|
||||
.padding(.horizontal, 8)
|
||||
.padding(.horizontal, notchTerminalContentEdgePadding.horizontal)
|
||||
|
||||
// Terminal content — the containerView is stable across
|
||||
// notch close/open cycles; updateNSView handles restart.
|
||||
TerminalNSViewRepresentable(terminalManager: terminalManager)
|
||||
.clipShape(RoundedRectangle(cornerRadius: 6, style: .continuous))
|
||||
.padding(.horizontal, 8)
|
||||
.padding(.bottom, 8)
|
||||
.padding(.top, 4)
|
||||
.clipShape(terminalClipShape)
|
||||
.padding(
|
||||
EdgeInsets(
|
||||
top: notchTerminalContentEdgePadding.top,
|
||||
leading: notchTerminalContentEdgePadding.horizontal,
|
||||
bottom: notchTerminalContentEdgePadding.bottom,
|
||||
trailing: notchTerminalContentEdgePadding.horizontal
|
||||
)
|
||||
)
|
||||
.onHover { hovering in
|
||||
updateSuppression(for: hovering)
|
||||
}
|
||||
|
|
@ -154,6 +189,10 @@ struct NotchTerminalView: View {
|
|||
.onDisappear {
|
||||
updateSuppression(for: false)
|
||||
}
|
||||
.onAppear {
|
||||
terminalManager.refreshTerminalAppearanceIfNeeded()
|
||||
terminalManager.focusTerminalIfPossible()
|
||||
}
|
||||
}
|
||||
|
||||
private func updateSuppression(for hovering: Bool) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue