353 Commits

Author SHA1 Message Date
Mitchell Hashimoto
f722e30bf5
macos: terminal controller reacts to surface config changes 2024-11-21 12:46:46 -08:00
Mitchell Hashimoto
35fcb1a29b
macos: change config access to evented, derived config like libghostty
Previously, we would access the `ghostty.config` object from anywhere.
The issue with this is that memory lifetime access to the underlying
`ghostty_config_t` was messy. It was easy when the apprt owned every
reference but since automatic theme changes were implemented, this isn't
always true anymore.

To fix this, we move to the same pattern we use internally in the core
of ghostty: whenever the config changes, we handle an event, derive our
desired values out of the config (copy them), and then let the caller
free the config if they want to. This way, we can be sure that any
information we need from the config is always owned by us.
2024-11-21 11:36:51 -08:00
Jon Parise
8a74b59a7e macos: struct attributes can be private 2024-11-15 22:47:38 -05:00
Jon Parise
de60382824 macos: further simplify using a @ViewBuilder 2024-11-15 22:43:21 -05:00
Jon Parise
2db43158a8 macos: formatting 2024-11-15 22:36:11 -05:00
Jon Parise
1807eabcb8 macos: prefer private View structs to functions 2024-11-15 22:33:27 -05:00
Jon Parise
6c3eaaf647 macos: support linkable AboutView properties
This allows us to enrich the build's commit property as a GitHub link.

This change also displays the property values using a monospaced font,
which I think looks a little nicer (especially the commit SHA).
2024-11-15 20:04:06 -05:00
Mitchell Hashimoto
4d9143f634
macos: use the pwd apprt action to set the proxy icon URL 2024-11-13 13:11:32 -08:00
Mitchell Hashimoto
9262cc5704
macos: restore window frame on cascadeTopLeft since macOS 15 moves it
Fixes #2565

This appears to be a bug in macOS 15. Specifically on macOS 15 when the
new native window snapping feature is used, `cascadeTopLeft(from: zero)`
will move the window frame back to its prior unsnapped position.

The docs for `cascadeTopLeft(from:)` explicitly say:

> When NSZeroPoint, the window is not moved, except as needed to constrain
> to the visible screen

This is not the behavior we are seeing on macOS 15. The window is on the
visible screen, we're using NSZeroPoint, and yet the window is still
being moved. This does not happen on macOS 14 (but its hard to say
exactly because macOS 14 didn't have window snapping).

This commit works around the issue by saving the window frame before
calling `cascadeTopLeft(from: zero)` and then restoring it afterwards
if it has changed.

I've also filed a radar with Apple for this issue.
2024-11-02 10:16:42 -07:00
Mitchell Hashimoto
63b11ceb5e
macos: quick terminal set colorspace 2024-10-31 09:29:14 -07:00
Mitchell Hashimoto
30e95e4b9a
Revert "macos: setup colorspace in base terminal controller"
This reverts commit e64b231248f68b2fd1e19d538d243b886d5284ff.
2024-10-31 09:28:08 -07:00
Mitchell Hashimoto
9dfe1fc7a0
Merge pull request #2553 from ghostty-org/push-zxvmpvrlxusn
macos: rectangle select only requires option + drag
2024-10-30 20:50:57 -04:00
Mitchell Hashimoto
c97c0858be
macos: rectangle select only requires option + drag
Fixes #2537

This matches Terminal.app. iTerm2 requires cmd+option (our old
behavior). Kitty doesn't seem to support rectangle select or I couldn't
figure out how to make it work. WezTerm matches Terminal.app too.
Outside of terminal emulators, this is also the rectangular select
binding for neovim.
2024-10-30 20:47:24 -04:00
Mitchell Hashimoto
e64b231248
macos: setup colorspace in base terminal controller
Fixes #2519

This sets up the colorspace for terminal windows in the base controller.

This also modifies some of our logic so its easier for subclasses of
base controllers to specify custom logic when the configuration reloads,
since that's likely to be a common thing.
2024-10-30 20:35:13 -04:00
Mitchell Hashimoto
756755c052
comment 2024-10-30 16:45:55 -04:00
Marvin A. Ruder
b454f90a1a
Replace check
* Check whether window is fullscreen before clamping
2024-10-30 21:42:25 +01:00
Marvin A. Ruder
7db9528aca
fix(macOS): Fix visual glitch when switching between full-screen apps
* Check whether window is on active space before clamping

Fixes #2527
2024-10-30 19:56:01 +01:00
Mitchell Hashimoto
734c8cec55
Merge pull request #2490 from futurepaul/quick-terminal-improvements
macos: quick terminal animate duration
2024-10-25 20:48:40 -07:00
Mitchell Hashimoto
3c8fc86d6f
small rename 2024-10-25 19:23:17 -07:00
Paul Miller
f4ba95b2c5
add quick-terminal-animate-duration option 2024-10-25 19:17:38 -05:00
Mitchell Hashimoto
50329e671c
Merge pull request #2489 from hackrmomo/fix/aerospace-resizing-quick-terminal
Fix: aerospace no longer resizes quick terminal and instead treats it as float
2024-10-25 15:12:58 -07:00
Mitchell Hashimoto
28751ae5b8
Merge pull request #2485 from axdank/move_current_Tab
gui: add move_current_tab action
2024-10-25 14:15:16 -07:00
Mitchell Hashimoto
de5ec5d83e
macos: make move_tab work 2024-10-25 11:54:07 -07:00
Mohammad Al-Ahdal
88119d0c17
default AXSubrole to .floatingWindow 2024-10-25 05:37:31 -06:00
Mohammad Al-Ahdal
5a1d09bcc6
Suggestion to use window identifier instead of trying to appease heuristics 2024-10-25 03:57:39 -06:00
Mitchell Hashimoto
582b8d039a
Merge pull request #2492 from johnseth97/macos-proxy-icon-fix
Macos proxy icon fix
2024-10-24 21:08:15 -07:00
Mitchell Hashimoto
67bc9fa0bc
macos: nuke the titlebar from orbit when hidden 2024-10-24 21:06:45 -07:00
johnseth97
e11fb62627
Fixed type conversion garbage 2024-10-24 23:47:34 -04:00
johnseth97
6c37fe2c26
Fixed conversion error between string and enum 2024-10-24 23:06:18 -04:00
johnseth97
f78ddabc15
refactored proxyIconURLDidChange to pwdDidChange 2024-10-24 23:01:54 -04:00
Mitchell Hashimoto
a651dbf3bf
macos: fix goto last tab 2024-10-24 19:58:13 -07:00
johnseth97
fc094ee924
Fixed formatting 2024-10-24 22:15:31 -04:00
johnseth97
7301afa83e
Removed uneeded code 2024-10-24 22:12:29 -04:00
johnseth97
8e223fdcd9
Reworked proxy icon, added config options. 2024-10-24 21:54:08 -04:00
Mohammad Al-Ahdal
3c8d9ae5a3
Fix: aerospace no longer resizes quick terminal and instead treats it as float 2024-10-24 03:00:17 -06:00
Max
553687b5e2 feat: make too big tab indices go to last tab 2024-10-23 20:27:13 +02:00
Mitchell Hashimoto
df7120d130
macos: use notification to detect when quick terminal shows/hides
Fixes #2474
2024-10-23 10:14:11 -07:00
johnseth97
7f898ce01f
Basic proxy icons showing
Removed changes that accidentally carried over from another local
branch.

Basic Proxy Icons showing
2024-10-23 00:40:38 -04:00
Ethan Johnson
1b6778b800
Merge branch 'ghostty-org:main' into macos-window-deocrations-rework 2024-10-21 17:43:37 -04:00
johnseth97
b1f0c490b3 Merge branch 'NSToolbar-Deprication-Warning-Fix' of github.com:johnseth97/ghostty into NSToolbar-Deprication-Warning-Fix 2024-10-21 08:56:01 -04:00
Ethan Johnson
a53b4f684e
Merge branch 'ghostty-org:main' into macos-window-deocrations-rework 2024-10-19 20:40:44 -04:00
johnseth97
96a0ca613a
Fixing deprecation warnings, experiencing new errors. 2024-10-19 18:53:29 -04:00
Mitchell Hashimoto
1134a9cbea
Merge pull request #2461 from JoshuaBrest/main
feat: Update MacOS about dialog
2024-10-19 14:16:54 -07:00
Mitchell Hashimoto
85db4d0277
macos: personal nitpicks and improvements 2024-10-19 14:07:04 -07:00
Josh
cc42dc57b9
fix: add text-selection back in the about dialoge. 2024-10-19 11:52:12 -07:00
Josh
d291fcfd52
style: add line break in the caption of the about dialog. 2024-10-19 11:45:24 -07:00
Josh
4b08b3f8d8
refactor: hide buttons when URLs are invalid and change variable mutability and visibility. 2024-10-19 11:23:04 -07:00
Mitchell Hashimoto
70acb0d76e
macos: clamp window size to screen size on screen parameter changes
Fixes #2462

This sets up a listener for screen parameter changes. This only triggers
when a screen is added, removed, or a parameter such as its resolution
changes. This doesn't trigger when a window is simply moved from one
screen to another.

On parameter change, we ensure that the window is within the bounds of
the screen. As an exception, if the window was previously already
outside the bounds of the screen, we don't move it back in.
2024-10-19 10:13:16 -07:00
Josh
42bf37af32
feat: Update about menu design to match macOS. 2024-10-19 00:31:43 -07:00
johnseth97
def3a62fb9
Modified window-decorations = none option on macos 2024-10-19 01:03:05 -04:00