From a6c8218bab806dcdc468e72a405a3da5b7528475 Mon Sep 17 00:00:00 2001 From: Harvey Zuccon Date: Sat, 7 Mar 2026 23:29:57 +1100 Subject: [PATCH] Require mouseExit after hotkey close before re-opening --- .../UserInterfaceState.xcuserstate | Bin 33622 -> 33163 bytes Downterm/CommandNotch/ContentView.swift | 5 ++++- .../CommandNotch/Models/NotchViewModel.swift | 8 ++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Downterm/CommandNotch.xcodeproj/project.xcworkspace/xcuserdata/harvmaster.xcuserdatad/UserInterfaceState.xcuserstate b/Downterm/CommandNotch.xcodeproj/project.xcworkspace/xcuserdata/harvmaster.xcuserdatad/UserInterfaceState.xcuserstate index 61f3b7560c88137d35b37c468b0a6cb531006086..ae272fab228f4b5ec4afad5c99559c5cf06d9341 100644 GIT binary patch delta 16191 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 delta 16400 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 Avj6}9 diff --git a/Downterm/CommandNotch/ContentView.swift b/Downterm/CommandNotch/ContentView.swift index 507497e..f96a446 100644 --- a/Downterm/CommandNotch/ContentView.swift +++ b/Downterm/CommandNotch/ContentView.swift @@ -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?() } } diff --git a/Downterm/CommandNotch/Models/NotchViewModel.swift b/Downterm/CommandNotch/Models/NotchViewModel.swift index 6f52206..7e90f1c 100644 --- a/Downterm/CommandNotch/Models/NotchViewModel.swift +++ b/Downterm/CommandNotch/Models/NotchViewModel.swift @@ -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() }