mirror of
https://github.com/FBukovina/Atoll.git
synced 2026-10-27 15:14:33 +00:00
Fix: Sneak peek
This commit is contained in:
parent
b46d88c79a
commit
6f4f1ae893
4 changed files with 25 additions and 23 deletions
|
|
@ -87,6 +87,18 @@ struct ContentView: View {
|
|||
var dynamicNotchSize: CGSize {
|
||||
let baseSize = Defaults[.enableMinimalisticUI] ? minimalisticOpenNotchSize : openNotchSize
|
||||
|
||||
// When inline sneak peek is active in closed notch, use the wider inline width
|
||||
// so the outer maxWidth frame doesn't clip the expanded content
|
||||
let inlineSneakPeekActive = vm.notchState == .closed
|
||||
&& coordinator.expandingView.show
|
||||
&& (coordinator.expandingView.type == .music || coordinator.expandingView.type == .timer)
|
||||
&& Defaults[.enableSneakPeek]
|
||||
&& Defaults[.sneakPeekStyles] == .inline
|
||||
if inlineSneakPeekActive {
|
||||
let inlineWidth: CGFloat = 460
|
||||
return CGSize(width: max(baseSize.width, inlineWidth), height: baseSize.height)
|
||||
}
|
||||
|
||||
if coordinator.currentView == .timer {
|
||||
return CGSize(width: baseSize.width, height: 250) // Extra height for timer presets
|
||||
}
|
||||
|
|
@ -952,37 +964,42 @@ struct ContentView: View {
|
|||
.fill(.black)
|
||||
.frame(width: effectiveCenterWidth, height: notchContentHeight)
|
||||
.overlay(
|
||||
HStack(alignment: .top){
|
||||
HStack(alignment: .top) {
|
||||
if(coordinator.expandingView.show && coordinator.expandingView.type == .music) {
|
||||
MarqueeText(
|
||||
.constant(musicManager.songTitle),
|
||||
textColor: Defaults[.coloredSpectrogram] ? Color(nsColor: musicManager.avgColor) : Color.gray,
|
||||
minDuration: 0.4,
|
||||
frameWidth: 100
|
||||
frameWidth: max(0, (effectiveCenterWidth - vm.closedNotchSize.width) / 2 - 12)
|
||||
)
|
||||
.padding(.leading, 8)
|
||||
.opacity((coordinator.expandingView.show && Defaults[.enableSneakPeek] && Defaults[.sneakPeekStyles] == .inline) ? 1 : 0)
|
||||
Spacer(minLength: vm.closedNotchSize.width)
|
||||
Text(musicManager.artistName)
|
||||
.lineLimit(1)
|
||||
.truncationMode(.tail)
|
||||
.foregroundStyle(Defaults[.coloredSpectrogram] ? Color(nsColor: musicManager.avgColor) : Color.gray)
|
||||
.padding(.trailing, 8)
|
||||
.opacity((coordinator.expandingView.show && coordinator.expandingView.type == .music && Defaults[.enableSneakPeek] && Defaults[.sneakPeekStyles] == .inline) ? 1 : 0)
|
||||
} else if(coordinator.expandingView.show && coordinator.expandingView.type == .timer) {
|
||||
MarqueeText(
|
||||
.constant(timerManager.timerName),
|
||||
textColor: timerManager.timerColor,
|
||||
minDuration: 0.4,
|
||||
frameWidth: 100
|
||||
frameWidth: max(0, (effectiveCenterWidth - vm.closedNotchSize.width) / 2 - 12)
|
||||
)
|
||||
.padding(.leading, 8)
|
||||
.opacity((coordinator.expandingView.show && Defaults[.enableSneakPeek] && Defaults[.sneakPeekStyles] == .inline) ? 1 : 0)
|
||||
Spacer(minLength: vm.closedNotchSize.width)
|
||||
Text(timerManager.formattedRemainingTime())
|
||||
.lineLimit(1)
|
||||
.truncationMode(.tail)
|
||||
.foregroundStyle(timerManager.timerColor)
|
||||
.padding(.trailing, 8)
|
||||
.opacity((coordinator.expandingView.show && coordinator.expandingView.type == .timer && Defaults[.enableSneakPeek] && Defaults[.sneakPeekStyles] == .inline) ? 1 : 0)
|
||||
}
|
||||
}
|
||||
.clipped()
|
||||
)
|
||||
|
||||
musicRightWing(for: secondary, notchHeight: notchContentHeight, trailingWidth: rightWingWidth)
|
||||
|
|
|
|||
|
|
@ -297,8 +297,8 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
|||
// If inline sneak peek is active, use a wider width to accommodate the expanded content
|
||||
if isInlineSneakPeekActive {
|
||||
// Calculate required width for inline sneak peek:
|
||||
// Album art (~32) + Middle section (380) + Visualizer (~32) + padding = ~450
|
||||
let inlineSneakPeekWidth: CGFloat = 450
|
||||
// Album art (~32) + Middle section (380) + Visualizer (~32) + horizontal padding (28) + clip shape margin (12)
|
||||
let inlineSneakPeekWidth: CGFloat = 460
|
||||
return CGSize(width: inlineSneakPeekWidth, height: vm.effectiveClosedNotchHeight)
|
||||
}
|
||||
|
||||
|
|
@ -513,11 +513,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
|||
}.store(in: &cancellables)
|
||||
|
||||
// Observe minimalistic UI setting changes - trigger window resize
|
||||
Defaults.publisher(.enableMinimalisticUI, options: []).sink { [weak self] change in
|
||||
// Force sneak peek to standard mode when minimalistic UI is enabled
|
||||
if change.newValue == true && Defaults[.sneakPeekStyles] != .standard {
|
||||
Defaults[.sneakPeekStyles] = .standard
|
||||
}
|
||||
Defaults.publisher(.enableMinimalisticUI, options: []).sink { [weak self] _ in
|
||||
// Update window size IMMEDIATELY (no debouncing) to prevent position shift
|
||||
self?.updateWindowSizeIfNeeded()
|
||||
}.store(in: &cancellables)
|
||||
|
|
|
|||
|
|
@ -22077,6 +22077,7 @@
|
|||
},
|
||||
"Sneak peek style is locked to Standard in minimalistic mode" : {
|
||||
"comment" : "A message displayed when the sneak peek style is locked to standard in minimalistic UI mode.",
|
||||
"extractionState" : "stale",
|
||||
"isCommentAutoGenerated" : true,
|
||||
"localizations" : {
|
||||
"pt-BR" : {
|
||||
|
|
|
|||
|
|
@ -2308,21 +2308,9 @@ struct Media: View {
|
|||
Text(style.rawValue).tag(style)
|
||||
}
|
||||
}
|
||||
.disabled(!enableSneakPeek || enableMinimalisticUI)
|
||||
.onChange(of: enableMinimalisticUI) { _, isMinimalistic in
|
||||
// Force standard sneak peek style when minimalistic UI is enabled
|
||||
if isMinimalistic {
|
||||
sneakPeekStyles = .standard
|
||||
}
|
||||
}
|
||||
.disabled(!enableSneakPeek)
|
||||
.settingsHighlight(id: highlightID("Sneak Peek Style"))
|
||||
|
||||
if enableMinimalisticUI {
|
||||
Text("Sneak peek style is locked to Standard in minimalistic mode")
|
||||
.font(.caption)
|
||||
.foregroundStyle(.secondary)
|
||||
}
|
||||
|
||||
HStack {
|
||||
Stepper(value: $waitInterval, in: 0...10, step: 1) {
|
||||
HStack {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue