Fix collapse issues
This commit is contained in:
parent
0e930c519c
commit
ec78041069
@ -10,6 +10,11 @@ struct MiniRecorderView: View {
|
|||||||
@State private var showEnhancementPromptPopover = false
|
@State private var showEnhancementPromptPopover = false
|
||||||
@State private var isHovering = false
|
@State private var isHovering = false
|
||||||
|
|
||||||
|
// Computed property to check if any popover is currently showing
|
||||||
|
private var isAnyPopoverShowing: Bool {
|
||||||
|
showPowerModePopover || showEnhancementPromptPopover
|
||||||
|
}
|
||||||
|
|
||||||
private var backgroundView: some View {
|
private var backgroundView: some View {
|
||||||
ZStack {
|
ZStack {
|
||||||
Color.black.opacity(0.9)
|
Color.black.opacity(0.9)
|
||||||
@ -76,12 +81,19 @@ struct MiniRecorderView: View {
|
|||||||
windowManager.expand()
|
windowManager.expand()
|
||||||
} else {
|
} else {
|
||||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.35) {
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.35) {
|
||||||
if !isHovering {
|
// Only collapse if not hovering AND no popover is showing
|
||||||
|
if !isHovering && !isAnyPopoverShowing {
|
||||||
windowManager.collapse()
|
windowManager.collapse()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.onAppear {
|
||||||
|
// Set up the callback so WindowManager can check popover and hover state
|
||||||
|
windowManager.shouldPreventCollapse = {
|
||||||
|
isAnyPopoverShowing || isHovering
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,6 +9,9 @@ class MiniWindowManager: ObservableObject {
|
|||||||
private let whisperState: WhisperState
|
private let whisperState: WhisperState
|
||||||
private let recorder: Recorder
|
private let recorder: Recorder
|
||||||
|
|
||||||
|
// Callback to check if collapse should be prevented (e.g., when popovers are showing)
|
||||||
|
var shouldPreventCollapse: (() -> Bool)?
|
||||||
|
|
||||||
init(whisperState: WhisperState, recorder: Recorder) {
|
init(whisperState: WhisperState, recorder: Recorder) {
|
||||||
self.whisperState = whisperState
|
self.whisperState = whisperState
|
||||||
self.recorder = recorder
|
self.recorder = recorder
|
||||||
@ -59,7 +62,7 @@ class MiniWindowManager: ObservableObject {
|
|||||||
expand()
|
expand()
|
||||||
|
|
||||||
DispatchQueue.main.asyncAfter(deadline: .now() + 2.5) {
|
DispatchQueue.main.asyncAfter(deadline: .now() + 2.5) {
|
||||||
if self.isExpanded {
|
if self.isExpanded && !(self.shouldPreventCollapse?() ?? false) {
|
||||||
self.collapse()
|
self.collapse()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user