Require mouseExit after hotkey close before re-opening

This commit is contained in:
2026-03-07 23:29:57 +11:00
parent ce20a46ccc
commit a6c8218bab
3 changed files with 12 additions and 1 deletions

View File

@@ -160,6 +160,7 @@ struct ContentView: View {
} else { } else {
hoverTask?.cancel() hoverTask?.cancel()
withAnimation(hoverAnimation) { vm.isHovering = false } withAnimation(hoverAnimation) { vm.isHovering = false }
vm.clearHoverOpenSuppression()
} }
} }
@@ -168,6 +169,7 @@ struct ContentView: View {
guard openNotchOnHover, guard openNotchOnHover,
vm.notchState == .closed, vm.notchState == .closed,
!vm.isCloseTransitionActive, !vm.isCloseTransitionActive,
!vm.suppressHoverOpenUntilHoverExit,
vm.isHovering else { return } vm.isHovering else { return }
hoverTask = Task { @MainActor in hoverTask = Task { @MainActor in
@@ -175,7 +177,8 @@ struct ContentView: View {
guard !Task.isCancelled, guard !Task.isCancelled,
vm.isHovering, vm.isHovering,
vm.notchState == .closed, vm.notchState == .closed,
!vm.isCloseTransitionActive else { return } !vm.isCloseTransitionActive,
!vm.suppressHoverOpenUntilHoverExit else { return }
vm.requestOpen?() vm.requestOpen?()
} }
} }

View File

@@ -12,6 +12,7 @@ class NotchViewModel: ObservableObject {
@Published var closedNotchSize: CGSize @Published var closedNotchSize: CGSize
@Published var isHovering: Bool = false @Published var isHovering: Bool = false
@Published var isCloseTransitionActive: Bool = false @Published var isCloseTransitionActive: Bool = false
@Published var suppressHoverOpenUntilHoverExit: Bool = false
let terminalManager = TerminalManager.shared let terminalManager = TerminalManager.shared
@@ -74,6 +75,9 @@ class NotchViewModel: ObservableObject {
func beginCloseTransition() { func beginCloseTransition() {
closeTransitionTask?.cancel() closeTransitionTask?.cancel()
isCloseTransitionActive = true isCloseTransitionActive = true
if isHovering {
suppressHoverOpenUntilHoverExit = true
}
let delay = closeInteractionLockDuration let delay = closeInteractionLockDuration
closeTransitionTask = Task { @MainActor [weak self] in closeTransitionTask = Task { @MainActor [weak self] in
@@ -90,6 +94,10 @@ class NotchViewModel: ObservableObject {
isCloseTransitionActive = false isCloseTransitionActive = false
} }
func clearHoverOpenSuppression() {
suppressHoverOpenUntilHoverExit = false
}
deinit { deinit {
closeTransitionTask?.cancel() closeTransitionTask?.cancel()
} }