Merge pull request #2697 from ghostty-org/push-xmnyomtrnlml

macos: swap out pointerVisible with NSCursor.setHiddenUntilMouseMoves
This commit is contained in:
Mitchell Hashimoto
2024-11-15 19:16:11 -08:00
committed by GitHub
3 changed files with 9 additions and 25 deletions

View File

@ -59,23 +59,6 @@ extension Ghostty {
@EnvironmentObject private var ghostty: Ghostty.App @EnvironmentObject private var ghostty: Ghostty.App
#if canImport(AppKit)
// The visibility state of the mouse pointer
private var pointerVisibility: BackportVisibility {
// If our window or surface loses focus we always bring it back
if (!windowFocus || !surfaceFocus) {
return .visible
}
// If we have window focus then it depends on surface state
if (surfaceView.pointerVisible) {
return .visible
} else {
return .hidden
}
}
#endif
var body: some View { var body: some View {
let center = NotificationCenter.default let center = NotificationCenter.default
@ -96,7 +79,6 @@ extension Ghostty {
.focusedValue(\.ghosttySurfaceView, surfaceView) .focusedValue(\.ghosttySurfaceView, surfaceView)
.focusedValue(\.ghosttySurfaceCellSize, surfaceView.cellSize) .focusedValue(\.ghosttySurfaceCellSize, surfaceView.cellSize)
#if canImport(AppKit) #if canImport(AppKit)
.backport.pointerVisibility(pointerVisibility)
.backport.pointerStyle(surfaceView.pointerStyle) .backport.pointerStyle(surfaceView.pointerStyle)
.onReceive(pubBecomeKey) { notification in .onReceive(pubBecomeKey) { notification in
guard let window = notification.object as? NSWindow else { return } guard let window = notification.object as? NSWindow else { return }

View File

@ -46,7 +46,6 @@ extension Ghostty {
@Published var surfaceSize: ghostty_surface_size_s? = nil @Published var surfaceSize: ghostty_surface_size_s? = nil
// Whether the pointer should be visible or not // Whether the pointer should be visible or not
@Published private(set) var pointerVisible: Bool = true
@Published private(set) var pointerStyle: BackportPointerStyle = .default @Published private(set) var pointerStyle: BackportPointerStyle = .default
// An initial size to request for a window. This will only affect // An initial size to request for a window. This will only affect
@ -309,7 +308,11 @@ extension Ghostty {
} }
func setCursorVisibility(_ visible: Bool) { func setCursorVisibility(_ visible: Bool) {
pointerVisible = visible // Technically this action could be called anytime we want to
// change the mouse visibility but at the time of writing this
// mouse-hide-while-typing is the only use case so this is the
// preferred method.
NSCursor.setHiddenUntilMouseMoves(!visible)
} }
// MARK: - Notifications // MARK: - Notifications

View File

@ -449,11 +449,10 @@ palette: Palette = .{},
/// way to implement it. /// way to implement it.
@"cursor-click-to-move": bool = true, @"cursor-click-to-move": bool = true,
/// Hide the mouse immediately when typing. The mouse becomes visible again when /// Hide the mouse immediately when typing. The mouse becomes visible again
/// the mouse is used. The mouse is only hidden if the mouse cursor is over the /// when the mouse is used (button, movement, etc.). Platform-specific behavior
/// active terminal surface. /// may dictate other scenarios where the mouse is shown. For example on macOS,
/// /// the mouse is shown again when a new window, tab, or split is created.
/// macOS: This feature requires macOS 15.0 (Sequoia) or later.
@"mouse-hide-while-typing": bool = false, @"mouse-hide-while-typing": bool = false,
/// Determines whether running programs can detect the shift key pressed with a /// Determines whether running programs can detect the shift key pressed with a