51 Commits

Author SHA1 Message Date
Mitchell Hashimoto
4ae20212bf libghostty: unified action dispatch
First, this commit modifies libghostty to use a single unified action
dispatch system based on a tagged union versus the one-off callback
system that was previously in place. This change simplifies the code on
both the core and consumer sides of the library. Importantly, as we
introduce new actions, we can now maintain ABI compatibility so long as
our union size does not change (something I don't promise yet).

Second, this moves a lot more of the functions call on a surface into
the action system. This affects all apprts and continues the previous
work of introducing a more unified API for optional surface features.
2024-09-26 22:00:11 -07:00
Qwerasd
92d310a660 macOS: prevent ctrl-return key equivalent
macOS 15 adds this as a default key equivalent to show the context menu,
this is annoying, so we capture the event and tell macOS we handled it.
2024-09-23 16:55:11 -06:00
Mitchell Hashimoto
c63af5efaa macos: cannot call mouseEntered/Exited with blank NSEvent
Fixes #2283

macOS <= 14 crash with an invalid NSEvent error. macOS 15 seems to just
ignore the blank event. We just got lucky with this. Since we don't
override mouseEntered/Exited anymore we can remove this completely.

The regression was from: e89a4f74089b66c00043096589dc75fff5ab6674
2024-09-22 10:17:45 -07:00
Mitchell Hashimoto
261ce00552 apprt/macos,gtk: unfocused splits now highlight hovered links
Fixes #1547

The core change to make this work is to make the cursor position
callback support taking updated modifiers. On both macOS and GTK, cursor
position events also provide the pressed modifiers so we can pass those
in.
2024-09-21 15:16:14 -07:00
Mitchell Hashimoto
0e1258b7fe macos: pointer style uses macOS 15 helpers 2024-09-20 22:02:21 -07:00
Mitchell Hashimoto
e89a4f7408 macos: use macOS 15 pointerVisibility to show/hide cursor 2024-09-20 22:02:20 -07:00
Mitchell Hashimoto
1ed1c73c1a macos: enable secure input on password input 2024-09-19 16:38:32 -07:00
Mitchell Hashimoto
498804b571 macos: right-click actions on surface should target surface under click
Fixes #2263
2024-09-18 13:43:57 -07:00
Mitchell Hashimoto
90d24f9e82 macos: get updated surface size metrics immediately on resize
Fixes #2149

Previously, the way we were getting the updated surface size would use
outdated (previous) values because the resize event was not processed by
the surface before the SwiftUI view processed the resize overlay. And
since the property we used wasn't `@Published`, we didn't get notified
when we got that updated value.
2024-08-29 14:56:30 -07:00
pnodet
7ff9af1520 style(macos): cleanup trailing spaces 2024-08-21 21:53:09 +02:00
Mitchell Hashimoto
2e0e8897e7 macos: avoid showing overlay if gained focus recently 2024-08-11 11:07:07 -07:00
Mitchell Hashimoto
9cf247bb3e macos: implement resize overlay
Implements the resize overlay configurations completely.
2024-08-10 20:17:33 -07:00
Łukasz Niemier
f9be02a20f chore: clean up typos 2024-08-05 13:56:57 +02:00
Mitchell Hashimoto
9785130c03 macos: add "Reset Terminal" context menu option 2024-08-01 14:58:03 -07:00
Gregory Anders
c9c7b3803e macos: add split menu items to context menu 2024-07-10 08:47:04 -05:00
Mitchell Hashimoto
cb790b8e39 macos: show URL on OSC8 hover 2024-07-06 10:25:12 -07:00
Mitchell Hashimoto
7fbc73ad37 macos: implement ctrl+command+d for quicklook under cursor 2024-07-01 10:08:38 -07:00
Mitchell Hashimoto
57d71450ab ctrl+click is handled as right-click (with various details)
If mouse capturing is enabled, we encode ctrl+click as ctrl+left-click
and DO NOT handle it as right click.
2024-06-30 19:44:51 -07:00
Mitchell Hashimoto
f0737356cb macos: i don't like windowing in the context menu 2024-06-30 15:19:59 -07:00
Mitchell Hashimoto
174d83bfd3 macos: add windowing commands to context menu 2024-06-30 15:18:33 -07:00
Mitchell Hashimoto
a771d65735 macos: start context-menu 2024-06-30 10:15:36 -07:00
Mitchell Hashimoto
03f37087a5 mouse button callbacks returns bool for consumption 2024-06-30 09:42:15 -07:00
Mitchell Hashimoto
46a0cbf9d7 macos: remove log statement 2024-06-30 09:18:13 -07:00
Mitchell Hashimoto
afc172728f macos: offset quicklook box a bit to look better (imo) 2024-06-29 11:31:12 -05:00
Mitchell Hashimoto
26735f0e05 apprt: convert selection info to a single struct and C API 2024-06-29 11:23:14 -05:00
Mitchell Hashimoto
80700d524d macos: add API to get selection top-left for quicklook 2024-06-29 10:42:45 -05:00
Mitchell Hashimoto
4c3fbffa4b macos: return valid selection range 2024-06-29 10:42:45 -05:00
Mitchell Hashimoto
d5f27245d4 macos: hacky API to get a CTFont for QuickLook 2024-06-29 10:42:45 -05:00
Mitchell Hashimoto
280b8efacc macos: I don't need any custom quicklook stuff 2024-06-29 10:42:45 -05:00
Mitchell Hashimoto
99faeab649 macos: release pressure on mouseUp 2024-06-29 10:42:45 -05:00
Mitchell Hashimoto
6faeb9ba40 core: mouse pressure state and callbacks 2024-06-29 10:42:45 -05:00
Mitchell Hashimoto
c165cef0a6 macos: initialize some pressure click boilerplate 2024-06-29 10:42:44 -05:00
Mitchell Hashimoto
50019bc766 minor comment changes 2024-06-18 17:09:29 -04:00
Cameron Dart
92e16ccbf7 no early return 2024-06-10 18:23:06 -07:00
Cameron Dart
29fb70197c macos: surface focus follow mouse 2024-06-10 16:07:33 -07:00
Mitchell Hashimoto
25484d2ccc macos: set background opacity/blur on window controller not surface 2024-06-07 12:31:45 -07:00
Mitchell Hashimoto
d2adf0501c macos: ime coordinate needs to be converted from view to window coords
Fixes #1756

We previously converted from view to screen coordinates but if the view
doesn't take up the full window then the view coordinates are wrong. We
need to convert to window coordinates in the middle.
2024-05-10 20:45:51 -07:00
Mitchell Hashimoto
ca9689be46 renderer/metal: API to handle macOS display ID changing 2024-05-04 19:40:58 -07:00
Mitchell Hashimoto
e31e25f54d apprt/embedded: add draw now API 2024-05-04 14:49:49 -07:00
Mitchell Hashimoto
6854fe91ab macos: only process key equivalents if we're focused
Fixes #1581
2024-03-15 14:11:46 -07:00
Qwerasd
bd03b19679 style 2024-03-08 13:24:01 -05:00
Qwerasd
d1ac0aff39 feat(macOS): Paste copied files as absolute paths.
Previously files would be pasted as only the filename. This commit
introduces an extension to NSPasteboard which provides a method to
consistently get the string contents of a pasteboard so that the
behavior can stay the same anywhere where we need to do that.
2024-03-07 20:53:48 -05:00
Mitchell Hashimoto
118b51157a macos: more robust surface focus state detection
Fixes #1500

This overhauls how we do focus management for surfaces to make it more
robust. This DID somehow all work before but was always brittle and was
a sketchy play with SwiftUI/AppKit behavior across macOS versions.

The new approach uses our window controller and terminal delegate
system to disseminate focus information whenever any surface changes
focus. This ensures that only ONE surface ever has focus in libghostty
because the controller ensures it is widely distributed.
2024-02-11 09:19:13 -08:00
Qwerasd
cf2968c186 fix(macOS): Prevent janky transition animation on DPI change 2024-02-05 15:48:02 -05:00
Qwerasd
7a4c97329e macOS: Add URL to documentation in comment 2024-02-05 15:41:33 -05:00
Qwerasd
e91e2d409b fix(macOS): Prevent incorrect scaling of the Metal layer after DPI change
Ref: https://developer.apple.com/library/archive/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/CapturingScreenContents/CapturingScreenContents.html#//apple_ref/doc/uid/TP40012302-CH10-SW27
2024-02-05 14:08:12 -05:00
Mitchell Hashimoto
62785d9e54 macos: report color scheme for surface to libghostty 2024-02-02 13:19:46 -08:00
Mitchell Hashimoto
81532c0b56 macos: support reading service result text into terminal 2024-01-21 17:26:41 -08:00
Mitchell Hashimoto
4dbd10c913 apprt/embedded: support asking for selection text, existence 2024-01-21 17:22:44 -08:00
Mitchell Hashimoto
4c9fc452b6 macos: register that we accept/send text types for services 2024-01-21 17:07:24 -08:00