Selman Kayrancioglu
6092c299d5
macos: reset mouse state on focus loss to prevent phantom drag
...
Fixes phantom mouse drag/selection when switching splits or apps.
The suppressNextLeftMouseUp flag and core mouse click_state were not
being reset on focus transitions, causing stale state that led to
unexpected drag behavior.
- Reset suppressNextLeftMouseUp in focusDidChange when losing focus
- Defensively reset the flag when processing normal clicks
- Reset core mouse.click_state and left_click_count on focus loss
2026-03-10 09:54:08 -07:00
Tim Culverhouse
3ee8ef4f65
macos: suppress split-focus click mouse reports
...
Amp-Thread-ID: https://ampcode.com/threads/T-019cb9fe-b11b-753f-99e7-8ecc52b73ec4
Co-authored-by: Amp <amp@ampcode.com >
2026-03-04 12:43:51 -06:00
Jeffrey C. Ollie
ea5b07d20f
core: add tests for ghostty.h
...
* ensure that `ghostty.h` compiles during basic Zig tests
* ensure that non-exhaustive enums are kept synchronized between
`ghostty.h` and their respective Zig counterpart.
* adjust some enums that varied from established conventions
2026-02-27 09:22:23 -06:00
Mitchell Hashimoto
a5909dfa1d
macos: command finished notifications always show up
2026-02-26 13:40:41 -08:00
Mitchell Hashimoto
1c3f7601a7
macos: pass last focused surface as env, use for focus detection
...
Fixes #10935
This is a more robust way to detect "is my surface focused" because that
question usually means "is my surface the last focused surface" if a
_different_ surface is not focused. We already have used this pattern
all over but we should extend it to SwiftUI too.
2026-02-25 14:01:12 -08:00
Martin Emde
40e6a6dd58
Refine spacing and header usage
...
This is 4pt header space, 12pt clickable frame height
2026-02-23 12:04:07 -08:00
Martin Emde
2842b18a3f
Only show drag handle on hovered surface
2026-02-23 12:04:07 -08:00
Martin Emde
47577c7623
Make top visual space for surface drag handles
2026-02-23 12:03:45 -08:00
Jon Parise
dd29617cd3
macos: swiftlint 'multiple_closures_with_trailing_closure' rule
...
Also, re-enable the 'force_cast' rule, which was addressed earlier.
2026-02-21 10:17:15 -08:00
Jon Parise
f4d70df34c
macos: swiftlint 'implicit_getter' rule
2026-02-19 19:02:49 -05:00
Jon Parise
629a656e53
macos: swiftlint 'vertical_whitespace' rule
2026-02-19 18:58:28 -05:00
Jon Parise
a36d2f5420
macos: swiftlint 'unused_closure_parameter' rule
2026-02-19 18:57:43 -05:00
Jon Parise
b532cd55d6
macos: swiftlint 'trailing_whitespace' rule
2026-02-19 18:56:43 -05:00
Jon Parise
33dce8511e
macos: swiftlint 'trailing_semicolon' rule
2026-02-19 18:56:25 -05:00
Jon Parise
6af959920e
macos: swiftlint 'syntactic_sugar' rule
2026-02-19 18:56:07 -05:00
Jon Parise
6052f664cf
macos: swiftlint 'opening_brace' rule
2026-02-19 18:53:13 -05:00
Jon Parise
b10dcc9629
macos: swiftlint 'legacy_constructor' rule
2026-02-19 18:43:22 -05:00
Jon Parise
9287a61920
macos: swiftlint 'implicit_optional_initialization' rule
2026-02-19 18:36:38 -05:00
Jon Parise
56d67ce88f
macos: swiftlint 'control_statement' rule
2026-02-19 18:34:37 -05:00
Jon Parise
786bad9774
macos: swiftlint 'colon' rule
2026-02-19 18:32:44 -05:00
Mitchell Hashimoto
2d02e4bb54
remove redraw_inspector message
2026-02-01 14:32:37 -08:00
Mitchell Hashimoto
020fe35c48
macos: render inspectors on timed updates, pause when occluded
2026-02-01 14:22:10 -08:00
Mitchell Hashimoto
fb8cb162ce
macos: Ghostty.Inspector
2026-01-31 09:22:26 -08:00
Mitchell Hashimoto
32f5677a94
macos: slow down inspector trackpad (precision) scrolling
2026-01-27 08:34:35 -08:00
MrConnorKenway
02d6dc0672
feat(macos): focus surface view if search box is manually closed
2026-01-22 09:25:47 +08:00
Mitchell Hashimoto
2db80e278e
feat(macos): if the search box is empty directly close the box ( #10384 )
...
referring to the discussion:
https://github.com/ghostty-org/ghostty/discussions/9814
This is a very small change addressing the behavior for closing the
search bar. This removes an extra step when closing the search bar if
the query is empty
2026-01-20 08:33:43 -08:00
Tim Culverhouse
5ee56409c7
macos: support mouse buttons 8/9 (back/forward)
...
Add support for mouse buttons 4-11 in the macOS app. Previously only
left, right, and middle buttons were handled. Now otherMouseDown/Up
events properly map NSEvent.buttonNumber to the corresponding Ghostty
mouse button, enabling back/forward button support.
Fixes: https://github.com/ghostty-org/ghostty/issues/2425
Amp-Thread-ID: https://ampcode.com/threads/T-019bd74e-6b2b-731d-b43a-ac73b3460c32
Co-authored-by: Amp <amp@ampcode.com >
2026-01-19 11:59:50 -06:00
Nishant Joshi
c8f56ddaf8
feat(macos): if the search box is empty directly close the box
2026-01-18 10:08:51 -08:00
Mitchell Hashimoto
f34c69147a
macos: use the new binding flags information value to trigger menu
2026-01-09 07:13:14 -08:00
Leah Amelia Chen
c559a1dbba
Allow for default or inherited CWD in new window, tab and split surfaces (redone for GTK-NG) ( #9158 )
2026-01-07 20:45:06 +08:00
Mitchell Hashimoto
7d0157e69a
macOS: add Cmd+J "Jump to Selection" menu item and default binding
...
This matches other built-in macOS apps like Terminal, Notes, Safari. We
already had the binding, just needed to create the menu.
https://ampcode.com/threads/T-019b956a-f4e6-71b4-87fa-4162258d33ff
2026-01-06 14:30:11 -08:00
Mitchell Hashimoto
05a41c7772
macos: clean up menu
2026-01-06 14:20:34 -08:00
Mitchell Hashimoto
8e28f58b42
rename the selection search binding, unify into start_search action
2026-01-06 14:10:42 -08:00
Aaron Ruan
9b6a3be993
macOS: Selection for Find feature
...
Adds the `selection_for_search` action, with Cmd+E keybind by default.
This action inputs the currently selected text into the search
field without changing focus, matching standard macOS behavior.
2026-01-06 22:21:55 +08:00
Peter Guy
b119bc6089
consolidated enums
2026-01-05 16:47:04 -08:00
Peter Guy
c035fb5385
Add an enum type for the C API
2026-01-05 16:47:04 -08:00
Peter Guy
496f5b3ed7
Add the context to the Swift layer.
...
- Define NewSurfaceContext to match the Zig enum name and avoid magic numbers.
2026-01-05 16:47:04 -08:00
Martin Emde
c384cd050e
Fix Mac window becomes unmovable after pane rearrangement
...
After rearranging panes, the window becomes permanently unmovable.
Grab handles temporarily set `window.isMovable = false` on hover to prevent
window dragging from interfering with pane dragging.
Override `viewWillMove(toWindow:)` to catch when the view is being removed from
the window. This lifecycle method is called before the window reference
becomes nil, allowing us to restore `window.isMovable`.
2026-01-01 15:56:25 -08:00
Ivan Buiko
c89627fe75
macOS: Add menu shortcut handling in macOS key event processing
...
Allow menu bar to flash for shortcuts and handle key equivalents before
checking for Ghostty key bindings
2026-01-01 12:47:16 -08:00
Mitchell Hashimoto
b3fbf11b0c
macOS: temporarily disable window.isMovable to fix #10110 ( #10125 )
...
Fixes #10110
2026-01-01 12:45:08 -08:00
Jon Parise
12024ed831
macos: simplify .keyDown guard condition
...
This condition is more naturally expressed as a `guard`.
2026-01-01 10:17:48 -05:00
Lukas
1249f3b88c
macOS: temporarily disable window.isMovable to fix #10110
2026-01-01 14:37:08 +01:00
Mitchell Hashimoto
43c7277a60
macos: make surface grab handle visible in light mode
2025-12-30 13:06:55 -08:00
Mitchell Hashimoto
29edbbbc86
macos: open dragged windows where they are dropped
2025-12-29 10:21:21 -08:00
Mitchell Hashimoto
25c413005b
macos: emit a notification when the surface drag ends outside area
2025-12-29 09:55:18 -08:00
Mitchell Hashimoto
c164e3bc02
macos: fix messy rebase
2025-12-29 07:13:25 -08:00
Mitchell Hashimoto
cfa3de5d9b
macos: change style
2025-12-29 06:55:01 -08:00
Mitchell Hashimoto
dbeeb952cc
macos: fix dragging point
2025-12-29 06:55:01 -08:00
Mitchell Hashimoto
e1f22472f6
macos: convert the transferable to a nsdraggingitem
2025-12-29 06:55:01 -08:00
Mitchell Hashimoto
7b743164ef
macos: fix iOS builds
2025-12-29 06:55:01 -08:00