Commit graph

307 commits

Author SHA1 Message Date
Daniel Eklöf
8e23b5b70d
selection: implement support for drag-and-drop
We accept COPY and MOVE actions, for text/plain;charset=utf-8
mime-types.

To implement DnD, we need to track the current DnD data offer *and*
the terminal instance it is (currently) targeting.

To do this, a seat has a new member, ‘dnd_term’. On a DnD enter event,
we lookup the corresponding terminal instance and point ‘dnd_term’ to
it.

On a DnD leave event, ‘dnd_term’ is reset.

The DnD data offer is tracked in the terminal’s wayland window
instance. It is reset, along with the seat’s ‘dnd_term’ on a DnD leave
event.

On a drop event, we immediately clear the seat’s ‘dnd_term’, to ensure
we don’t reset it, or destroy the offer before the drop has been
completed.

The drop’s ‘done()’ callback takes care of destroying and resetting
the DnD offer in the terminal’s wayland window instance.

Closes #175
2020-10-26 21:02:53 +01:00
Daniel Eklöf
4283e96865
render: blink switches between foreground and dimmed foreground 2020-10-22 18:41:47 +02:00
Daniel Eklöf
353e51b0a1
Merge branch 'custom-bold-italic-fonts'
Closes #169
2020-10-21 16:33:45 +02:00
Daniel Eklöf
f0d91fc490
changelog: restored -> restore 2020-10-20 21:32:20 +02:00
Daniel Eklöf
2c101a21ee
config: add font-bold, font-italic and font-bold-italic options
These options lets the user configure custom fonts and styles, to use
with the bold and italic cell attributes.

By default, they are unset, meaning we use the bold/italic variants of
the regular font.

Closes #169.
2020-10-20 21:04:47 +02:00
Daniel Eklöf
0d319f8793
input: handle XKB errors
* Don’t de-reference the xkb context/keymap/state if we failed to
  instantiate them.
* Don’t try to send a translated utf8 key sequence if the translation
  failed.
* Handle xkb_compose_state_get_utf8() and xkb_state_key_get_utf8()
  returning more than 64 bytes.

This _may_ fix #171.
2020-10-20 21:01:33 +02:00
Daniel Eklöf
4c3d2cfc7d
input: don’t allow diagonal resize when tiled 2020-10-20 21:00:19 +02:00
Daniel Eklöf
f928c1fa68
wayland: properly restore window size when being un-tiled
Bind to xdg-shell version 2 if available, as this enables us to
track our window’s ‘tiled’ state in the ‘configure’ events.

This in turn allows us to stash the ‘old’ window size when being
tiled, to be used again when restoring the window size when un-tiled.
2020-10-20 20:58:03 +02:00
Daniel Eklöf
0573c685c7
input: don’t crash if xkbcommon cannot find a compose file
Handle xkb_compose_table_new_from_locale() returning NULL. When this
happens, log a warning that “dead keys” will be disabled, and make
sure to never de-reference the compose table pointer.

Closes #170
2020-10-19 18:30:19 +02:00
Daniel Eklöf
8b06a55cb0
Merge branch 'releases/1.5' into master 2020-10-13 08:06:56 +02:00
Daniel Eklöf
fdb7e40355
input: regression: don’t pass on mouse click to application if we consumed it
When we ‘consume’ a mouse button event (i.e. when we have a shortcut
mapped to it), the event should *not* be passed on to the client
application.

In 5f64c5c335, button handling was
refactored and unfortunately introduced a regression where we once
again started passing consumed button presses to the client
application.

Fixes #168
2020-10-13 08:02:09 +02:00
Daniel Eklöf
d75e50230e
Merge branch 'scroll-up-down-while-selecting' into master
Closes #149
2020-10-12 20:20:26 +02:00
Daniel Eklöf
27cb17e71e
Merge branch 'releases/1.5' into master 2020-10-11 19:36:00 +02:00
Daniel Eklöf
77a87b30ff
changelog: prepare for 1.5.1 2020-10-11 19:31:01 +02:00
Daniel Eklöf
a32464e296
changelog: remove duplicate entry 2020-10-11 19:27:37 +02:00
Daniel Eklöf
70a6f88823
changelog: update ‘contributors’ list 2020-10-11 19:27:12 +02:00
Sergey Nazaryev
e842f49367
selection: use appropriate check for PRIMARY paste
Assume it could be a copy-paste typo. We should check PRIMARY, not
CLIPBOARD. Without this fix, we can't use PRIMARY until we copy anything
to CLIPBOARD.
2020-10-11 19:27:07 +02:00
Daniel Eklöf
282af44784
config: bind shift+insert to primary-paste by default 2020-10-11 19:26:57 +02:00
Daniel Eklöf
4bf61fe2f1
changelog: add contributor 2020-10-11 19:26:36 +02:00
Daniel Eklöf
5477ee8894
csi: only respond to Primary DA when Ps == 0 2020-10-11 19:26:25 +02:00
Daniel Eklöf
98c316556f
changelog: we’ve fixed several sixel+reflow related bugs 2020-10-11 19:26:10 +02:00
Daniel Eklöf
cdcdfe527c
sixel: fix sheared image when image crosses scrollback wrap-around
When a sixel image crosses the scrollback wrap-around, it is split up
into (at least) two pieces.

We use cursor->point.col for all pieces’ x-coordinate. This caused the
final image to appear sheared, since we do a carriage-return (after a
number of linefeeds) after each piece - this causes the cursor’s
position to be reset to the left margin.

The solution is simple; remember the cursor’s initial x-coordinate,
and use that to position all image pieces.

Closes #151.
2020-10-11 19:25:18 +02:00
Daniel Eklöf
7a7ba599c3
sixel: overwrite-by-rectangle expects ‘width’ to not exceed screen
This fixes a crash when the emitted sixel extends beyond the right
margin. The crash only happens when there are other sixel images
already emitted.

Fixes part of #151
2020-10-11 19:25:16 +02:00
Daniel Eklöf
a53e8c2866
render: apply opacity correctly when in reverse video mode 2020-10-11 19:24:50 +02:00
Daniel Eklöf
852fc049c8
config: ignore key/value pairs following an invalid section name
When we detected an invalid section name, we correctly logged this and
warned the user.

However, the internal state machine now had an invalid section enum
value. This caused a crash when the next key/value pair was to be
parsed and we tried to lookup which parser function to call.

Closes #159.
2020-10-11 19:24:08 +02:00
Daniel Eklöf
3c057fb600
changelog: trackpad scrolling: ‘multiplier’ is in the ‘scrollback’ section 2020-10-11 19:23:35 +02:00
Daniel Eklöf
aa3fcc1251
changelog: multiplier: the option belongs to the ‘scrollback’ section 2020-10-11 19:23:33 +02:00
Daniel Eklöf
8181113e3c
changelog: multiplier default value changed from 1.0 -> 3.0 2020-10-11 19:23:31 +02:00
Daniel Eklöf
1bc9c1c230
changelog: reword trackpad scrolling speed entry 2020-10-11 19:23:27 +02:00
Daniel Eklöf
8e04b08615
input: trackpad scroll: correctly convert pixel movements to line movements
Trackpad scroll movements are in pixels. Foot previously “translated”
these directly to line movements (i.e. a one pixel scroll event was
translated into a one line scroll).

Now we use the line height of the terminal and correctly convert
pixels to lines.

This makes the trackpad scroll speed in foot consistent with the
scroll speed in e.g. Alacritty and Kitty.
2020-10-11 19:23:25 +02:00
Daniel Eklöf
b12ce3d7d7
grid: reflow: retain scrollback position
Closes #142
2020-10-11 19:23:09 +02:00
Daniel Eklöf
acd1d6a4a3
changelog: fixed color flashes with OSC 4,10,11 2020-10-11 19:23:06 +02:00
Daniel Eklöf
59ca98f989
input: mouse: match binding if binding’s click count is *less*
Allow a mouse binding to match even if its click count is less than
the actual click count.

If there are multiple bindings that match, use the one with the
highest click count (that less than, or equal to the actual click
count).

Closes #146
2020-10-11 19:22:47 +02:00
Daniel Eklöf
7bb756ccbc
changelog: add new ‘unreleased’ section 2020-10-11 19:22:21 +02:00
Daniel Eklöf
c938d9f614
changelog: remove duplicate entry 2020-10-11 19:20:24 +02:00
Daniel Eklöf
7b11c27570
changelog: move ‘csd.preferred=none’ from ‘changed’ to ‘added’ 2020-10-11 19:04:21 +02:00
Daniel Eklöf
2203422d8a
changelog: auto-scroll while selecting 2020-10-11 18:19:38 +02:00
Daniel Eklöf
17761dce63
csi: implement ‘CSI ? 1042 h/l’ - enable/disable bell-is-urgent 2020-10-11 17:44:29 +02:00
Daniel Eklöf
d7147db0fb
changelog: update ‘contributors’ list 2020-10-10 23:34:21 +02:00
Sergey Nazaryev
d95dd062aa selection: use appropriate check for PRIMARY paste
Assume it could be a copy-paste typo. We should check PRIMARY, not
CLIPBOARD. Without this fix, we can't use PRIMARY until we copy anything
to CLIPBOARD.
2020-10-10 21:13:58 +03:00
Daniel Eklöf
6ff97128fc
conf: csd.preferred can now be set to ‘none’
When csd.preferred == none, we will request CSDs from the compositor,
but internally render as if we are using SSDs. That is, we don’t
render any window decorations at all.

Note that some compositors may ignore our request to use CSDs, and
still render SSDs for us.

Closes #163
2020-10-10 13:07:29 +02:00
Daniel Eklöf
e54adbfa7c
Merge branch 'bind-shift+insert-to-primary-paste' into master 2020-10-10 13:05:55 +02:00
Daniel Eklöf
afafe12d5b
config: bind shift+insert to primary-paste by default 2020-10-10 10:27:42 +02:00
Daniel Eklöf
4fd9fb33fc
changelog: added: word-delimiters option to foot.ini 2020-10-09 19:47:03 +02:00
Daniel Eklöf
c66ad118b7
changelog: add contributor 2020-10-09 19:19:40 +02:00
Daniel Eklöf
5b0af8ed59
csi: only respond to Primary DA when Ps == 0 2020-10-09 18:53:00 +02:00
Daniel Eklöf
606e901cea
changelog: we’ve fixed several sixel+reflow related bugs 2020-10-09 07:44:18 +02:00
Daniel Eklöf
bc75f4744c
sixel: fix sheared image when image crosses scrollback wrap-around
When a sixel image crosses the scrollback wrap-around, it is split up
into (at least) two pieces.

We use cursor->point.col for all pieces’ x-coordinate. This caused the
final image to appear sheared, since we do a carriage-return (after a
number of linefeeds) after each piece - this causes the cursor’s
position to be reset to the left margin.

The solution is simple; remember the cursor’s initial x-coordinate,
and use that to position all image pieces.

Closes #151.
2020-10-09 07:44:15 +02:00
Daniel Eklöf
96405c2ca9
sixel: overwrite-by-rectangle expects ‘width’ to not exceed screen
This fixes a crash when the emitted sixel extends beyond the right
margin. The crash only happens when there are other sixel images
already emitted.

Fixes part of #151
2020-10-09 07:44:13 +02:00
Daniel Eklöf
7c6686221f
bell: optionally render margins in red when receiving BEL
Add anew config option, ‘bell=none|set-urgency’. When set to
‘set-urgency’, the margins will be painted in red (if the window did
not have keyboard focus).

This is intended as a cheap replacement for the ‘urgency’ hint, that
doesn’t (yet) exist on Wayland.

Closes #157
2020-10-08 19:55:32 +02:00