macOS: only emit a mouse exited position if we're not dragging

Fixes #7071

When the mouse is being actively dragged, AppKit continues to emit
mouseDragged events which will update our position appropriately. The
mouseExit event we were sending sends a synthetic (-1, -1) position
which was causing a scroll up.
This commit is contained in:
Mitchell Hashimoto
2025-04-13 12:45:37 -07:00
parent 66636195f1
commit 6d80388155

View File

@ -743,6 +743,13 @@ extension Ghostty {
override func mouseExited(with event: NSEvent) {
guard let surface = self.surface else { return }
// If the mouse is being dragged then we don't have to emit
// this because we get mouse drag events even if we've already
// exited the viewport (i.e. mouseDragged)
if NSEvent.pressedMouseButtons != 0 {
return
}
// Negative values indicate cursor has left the viewport
let mods = Ghostty.ghosttyMods(event.modifierFlags)
ghostty_surface_mouse_pos(surface, -1, -1, mods)