4375 Commits

Author SHA1 Message Date
Chris Marchesi
aeaf5ea467 Surface: fix some rectangle select behaviors
This fixes a couple of subtle rectangle select behaviors:

* Corrects how selection rolls over when crossing the x-boundary; this
  was mentioned in #1021, this properly corrects it so both sides of the
  x-boundary do not share characters.

* Corrects a minor quirk in the selection of initial cells in a
  selection - this can be more readily observed when selecting a single
  line with rectangle select. To correct this, we only use the x axis
  when calculating this instead of both x and y.
2023-12-13 10:51:17 -08:00
Mitchell Hashimoto
08e0d0b836 apprt/gtk: do not encode control characters into utf8 event field 2023-12-13 10:45:47 -08:00
Mitchell Hashimoto
b3522f548e confirmance: fix unused var warnings 2023-12-13 10:36:08 -08:00
Mitchell Hashimoto
85b40874cf font/sprite: manually determine which box codepoints are unadjusted
Some box codepoints (the cursor) want to use the original font metrics
height but others (corners) want to use the full grid height. I can't
see a better way to do this than manually maintaining a switch here. We
can add codepoints as needed.
2023-12-13 10:32:16 -08:00
Denys Pavlov
fc7013fc2e gtk: close tabs with middle-click
Follow the behaviour of other tabbed interfaces like browsers, editors,
and file-managers.

GTK code is based on `/src/apprt/gtk/ImguiWidget.zig`
2023-12-13 11:14:35 -05:00
Tim Culverhouse
4bd9b1365a key: add TODO's for media keys
Add TODO comments in places where we need to add media keys.
2023-12-13 06:57:15 -06:00
Tim Culverhouse
a0880bcfed key: add additional keypad keys
Add additional keypad keys to the encoding scheme. This allows Ghostty
to report KP_HOME and it's relatives. We also always check for a keyval
first, so we can report KP_7, etc as opposed to ASCII '7'.
2023-12-13 06:55:22 -06:00
Tim Culverhouse
eb8fc910e0 gtk: get num_lock state for key events
GTK doesn't expose the num_lock state via the key press event, this must
be obtained directly from the device. Set the num_lock state in the
modifier mask. This also will never show up as a `consumed_mod`, so we
don't bother setting it there.

Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2023-12-13 06:55:22 -06:00
Matt Robenolt
ae6645586e unpack rgb correctly 2023-12-12 21:56:35 -08:00
Mitchell Hashimoto
20dbe9792e Merge pull request #1072 from mitchellh/cell-height
`adjust-cell-height` adjustments
2023-12-12 20:59:48 -08:00
Mitchell Hashimoto
1c3948f4d7 Merge pull request #1062 from mitchellh/mrn/gtk-equalize-splits
gtk: implement equalize_splits
2023-12-12 20:59:33 -08:00
Mitchell Hashimoto
8fc0cdb220 font: cursor size remains original cell height if height adjusted
Fixes #1067
2023-12-12 20:43:11 -08:00
Thorsten Ball
47b0592c73 gtk: use f64 everywhere instead of i16/f16/c_int 2023-12-13 05:38:34 +01:00
Mitchell Hashimoto
dafc02e29c font: adjust cell baseline to center after modification, fix styles
Fixes #1064
Fixes #1066
2023-12-12 20:14:02 -08:00
Mitchell Hashimoto
6403ef1198 font/coretext: ceil the cell height and ascent metrics
Fixes #1068
2023-12-12 19:58:57 -08:00
Matt Robenolt
1b039b35ac typos 2023-12-12 17:22:37 -08:00
Matt Robenolt
3866e09210 Use packed struct 2023-12-12 17:20:42 -08:00
Matt Robenolt
91937c4ada Apply feedback 2023-12-12 17:14:47 -08:00
Matt Robenolt
8e607f372b Configurable unfocused dimming color 2023-12-12 16:34:41 -08:00
Mitchell Hashimoto
7c2ecfea90 Merge pull request #1061 from jcollie/nix-formatting
Use Alejandra to format Nix modules.
2023-12-12 14:31:26 -08:00
Jeffrey C. Ollie
33c2ffcdd1 Fix another spelling error. 2023-12-12 12:57:06 -06:00
Jeffrey C. Ollie
f076d6c958 Fix spelling error. 2023-12-12 12:38:39 -06:00
Thorsten Ball
e67fa7abe0 gtk: implement equalize_splits
This adds support for the equalize_splits feature that's already
implemented for macOS.

It's essentially a port of the Swift implementation, using the same
weights-mechanism to equalize split sizes.
2023-12-12 19:30:29 +01:00
Jeffrey C. Ollie
ec5b26347f Add formatter output to flake so that 'nix fmt' does the right thing. 2023-12-12 11:55:44 -06:00
Jeffrey C. Ollie
c4ed1f1b80 Use Alejandra to format Nix modules. 2023-12-12 11:38:39 -06:00
Mitchell Hashimoto
2f9750ad7f Merge pull request #1057 from vancluever/vancluever-powerline-half-circle-ellipse-refs
Powerline: add references for the ellipse algorithm
2023-12-12 07:46:59 -08:00
Mitchell Hashimoto
cee213d00b Merge pull request #1060 from gpanders/osc-hex-colors
term: parse hex color string for OSC commands
2023-12-12 07:46:34 -08:00
Mitchell Hashimoto
2a611f5c19 Merge pull request #1059 from jcollie/nix-subpackages
Add "terminfo" and "shell_integration" subpackages to the Nix package
2023-12-12 07:45:36 -08:00
Gregory Anders
2da05a6d5c term: parse hex color string for OSC commands 2023-12-12 09:43:38 -06:00
Jeffrey C. Ollie
bba8583a21 Add "terminfo" and "shell_integration" subpackages to the Nix package so that the Ghostty
terminfo and shell integration files can be installed on a headless server without copying all
of Ghostty to the server. Implementation liberally cribbed from the Kitty Nix package.
2023-12-12 09:30:21 -06:00
Chris Marchesi
c03ae47a27 Powerline: add references for the ellipse algorithm
Further to the additional comments in #1055, this adds some references
to the comments in the ellipse algorithm (including the original
reference for the circle algorithm).
2023-12-12 00:10:40 -08:00
Mitchell Hashimoto
e5acb082c1 Merge pull request #1056 from mitchellh/ct-shaping
CoreText font shaper, fix glyph offset handling (in Harfbuzz, too)
2023-12-11 22:17:27 -08:00
Mitchell Hashimoto
24d4981996 font: note why shaper is not enabled 2023-12-11 21:58:49 -08:00
Mitchell Hashimoto
bcf6753c68 renderer/opengl: use new glyph offsets 2023-12-11 21:47:03 -08:00
Mitchell Hashimoto
34cdb871f5 font/coretext: clarify buggy coretext shaper 2023-12-11 21:42:49 -08:00
Mitchell Hashimoto
489ed57e2f font/harfbuzz: track x/y offsets 2023-12-11 21:41:13 -08:00
Mitchell Hashimoto
d116ed0583 Merge pull request #1055 from vancluever/vancluever-powerline-half-circle-ellipse
Powerline: Change half-circle algorithm to ellipse
2023-12-11 21:30:11 -08:00
Mitchell Hashimoto
114723af9e font/coretext: shaper applies x/y offsets 2023-12-11 21:22:30 -08:00
Chris Marchesi
4aa56ab8dd Powerline: Change half-circle algorithm to ellipse
This changes the half-circle drawing algorithm for glyphs E0B4 and E0B6
to an ellipse algorithm.

This fixes a shortcoming in the circle approach - how do you handle
drawing for a box that is not a typical 2:1 H*W? We were trying to
anticipate this by taking the smaller of the two axes and using that for
the radius. This works when there's some error in the zoom and the x
radius somehow becomes larger than the y radius (in observation, this
happens occasionally in some zoom steps, but only slightly).

However, turns out a more realistic anticipation is for fonts that have
a much *larger* height-to-width ratio. Iosevka, for example, has an
approx. 2.6:1 ratio (observed in the inspector). In this instance, this
approach does nothing except lock the circle to an extremely small
radius. For this instance, we need an ellipse, which will handle all
cases in an expected fashion.

Fixes #1050.
2023-12-11 21:01:11 -08:00
Mitchell Hashimoto
cc0b615552 pkg/macos: more APIs 2023-12-11 20:48:45 -08:00
Mitchell Hashimoto
fcd9de0311 font/coretext: coretext shaper is cleaner 2023-12-11 12:56:30 -08:00
Mitchell Hashimoto
b0a7db65be Merge pull request #1051 from RGBCube/main
input: add scroll_page_lines
2023-12-11 12:45:35 -08:00
RGBCube
d659b12fb9 input: add scroll_page_lines 2023-12-11 23:35:40 +03:00
Mitchell Hashimoto
62a5fe0236 font/shape: add coretext shaper 2023-12-11 11:13:49 -08:00
Mitchell Hashimoto
0137f5b0d3 pkg/macos: add many more text APIs 2023-12-11 11:12:29 -08:00
Mitchell Hashimoto
22a0869525 font/shaper: if char is 0, should send space to shaper 2023-12-11 11:12:29 -08:00
Mitchell Hashimoto
ff68c56268 pkg/macos: implement CTRun 2023-12-11 11:12:28 -08:00
Mitchell Hashimoto
554d2d0185 Merge pull request #1048 from mitchellh/combining
font: position combining character correctly on x-axis
2023-12-11 07:56:12 -08:00
Mitchell Hashimoto
3e9a6e4de5 renderer/opengl: apply extra offset for zero-advance glyphs 2023-12-10 17:10:00 -08:00
Mitchell Hashimoto
5e9ddb5e65 renderer/metal: offset zero-advance glyphs by the cell width 2023-12-10 17:08:32 -08:00