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

View File

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