Commit Graph
31 Commits
Author SHA1 Message Date
Leah Amelia Chen 1d053bd6ea gtk: implement drag-to-move for splits
One major todo is moving splits across different split trees (i.e.
moving across tabs and windows), but that would involve a lot more logic.
This MVP version works for now.

GTK version of #10090

Closes #10224
2026-08-05 16:18:49 +08:00
Daniel Kinzler 57a9adce71 fix datastruct/SplitTree not calculating the correct new split ratio when resizing a split 2026-05-05 18:00:04 +02:00
Mitchell Hashimoto 969748eb35 split_tree: wrap spatial goto around edges
Fixes #8406

Spatial split navigation now wraps at the edges.

We first attempt the nearest spatial target using the existing slot geometry. 
If there is no candidate in the requested direction, we synthesize a wrapped 
target by shifting the current slot by one full grid in the opposite 
direction and reuse the same nearest-distance logic. 

This fake target works because the grid is 1x1, so by moving it a full
grid size in the opposite direction, we effectively wrap around to the
other side of the grid.
2026-02-17 20:35:25 -08:00
Steven Lu ba16ce0249 reintroduce assertion, with adjusted limit 2026-01-21 20:03:37 +07:00
Steven Lu 2d7305a16a this appears to fix the crash. 2026-01-21 00:02:06 +07:00
Steven Lu 06130d40da split_tree: fix test passing wrong type to split()
The test was passing *TestView instead of *TestTree to the split()
function, which caused a compilation error.
2026-01-20 00:55:50 +07:00
Steven Lu 6db4e437ca splits: make resize_split and toggle_split_zoom non-performable with single pane
When a tab contains only a single split, resize_split and toggle_split_zoom
actions now return false (not performed). This allows keybindings marked with
`performable: true` to pass the event through to the terminal program.

The performable flag causes unperformed actions to be treated as if the
binding didn't exist, so the key event is sent to the terminal instead of
being consumed.

- Add isSplit() helper to SplitTree to detect single-pane vs split state
- Update GTK resizeSplit/toggleSplitZoom to return false when single pane
- Update macOS resizeSplit/toggleSplitZoom to return Bool and check isSplit
- Add unit test for isSplit method
2026-01-19 17:34:34 +07:00
Qwerasd 6d5b4a3426 perf: replace std.debug.assert with inlined version
See doc comment in `quirks.zig` for reasoning
2025-11-17 12:13:56 -07:00
Mitchell Hashimoto cb295b84a0 Zig 0.15: zig build test 2025-10-03 07:10:43 -07:00
Leah Amelia Chen 93debc439c gtk: the Future is Now 2025-09-05 10:10:52 +02:00
Leah Amelia Chen ac52af27d3 gtk: nuke the legacy apprt from orbit
We don't really have any large outstanding regressions on -ng to warrant
keeping this alive anymore. ¡Adiós!
2025-09-05 00:21:41 +02:00
Mitchell Hashimoto fb846b669c split_tree: convert Handle to enum 2025-08-12 13:34:35 -07:00
Mitchell Hashimoto 145d1c1739 split_tree: track zoomed state 2025-08-12 13:08:04 -07:00
Mitchell Hashimoto 93da59682f apprt/gtk-ng: resizeSplit action 2025-08-12 11:04:34 -07:00
Mitchell Hashimoto 4afd3445c4 split_tree: fix bugs for 0/1 sized ratios 2025-08-12 10:46:43 -07:00
Mitchell Hashimoto 2bcc2fa4bd split_tree: resize function 2025-08-11 12:52:16 -07:00
Mitchell Hashimoto 9f037a7c23 apprt/gtk-ng: equalize splits 2025-08-11 11:35:13 -07:00
Mitchell Hashimoto 43c3150e81 split_tree: unit tests for spatial nav, fix a bug 2025-08-11 10:59:37 -07:00
Mitchell Hashimoto 5a01877c77 apprt/gtk-ng: spatial navigation 2025-08-11 10:17:13 -07:00
Mitchell Hashimoto 984435d7ea split_tree: deepest, previous, next traversals 2025-08-11 09:30:59 -07:00
Mitchell Hashimoto aed6a3a343 apprt/gtk-ng: clean up some changed handlers 2025-08-09 14:24:25 -07:00
Mitchell Hashimoto ec293c1fd0 apprt/gtk-ng: active surface hookups 2025-08-09 13:49:36 -07:00
Mitchell Hashimoto 8232cf33b4 apprt/gtk-ng: surface close in split tree 2025-08-09 12:36:27 -07:00
Mitchell Hashimoto 34be4de018 apprt/gtk-ng: write back split ratio to tree 2025-08-09 12:19:10 -07:00
Mitchell Hashimoto fbe28477ff datastruct: fix split tree ascii diagram 2025-08-08 14:22:38 -07:00
Mitchell Hashimoto 75dd8e46b5 datastruct: fix split tree debug log rounding 2025-08-08 14:22:38 -07:00
Mitchell Hashimoto 326e55c8f8 apprt/gtk-ng: PR feedback 2025-08-07 08:37:22 -07:00
Mitchell Hashimoto 70b050ebb4 apprt/gtk-ng: setup split tree property 2025-08-07 08:14:02 -07:00
Mitchell Hashimoto fa08434b28 apprt/gtk-ng: initial GhosttySplitTree widget 2025-08-07 08:14:02 -07:00
Mitchell Hashimoto ad1cfe8347 remove outdated comment 2025-08-07 08:14:02 -07:00
Mitchell Hashimoto 3e767c166c datastruct: split tree node removal 2025-08-07 08:14:02 -07:00