Merge branch 'finalize-selection-on-window-resize'

Closes #922
This commit is contained in:
Daniel Eklöf 2022-02-07 13:23:56 +01:00
commit 3baf7de3b8
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
3 changed files with 27 additions and 0 deletions

View file

@ -40,6 +40,11 @@
## Unreleased
### Added
### Changed
* Mouse selections are now finalized when the window is resized
(https://codeberg.org/dnkl/foot/issues/922).
### Deprecated
### Removed
### Fixed
@ -48,6 +53,8 @@
(https://codeberg.org/dnkl/foot/issues/918).
* “(null)” being logged as font-name (for some fonts) when warning
about a non-monospaced primary font.
* Rare crash when the window is resized while a mouse selection is
ongoing (https://codeberg.org/dnkl/foot/issues/922).
### Security

View file

@ -3681,7 +3681,23 @@ maybe_resize(struct terminal *term, int width, int height, bool force)
if (term->grid == &term->alt)
selection_cancel(term);
else {
/*
* Dont cancel, but make sure there arent any ongoing
* selections after the resize.
*/
tll_foreach(term->wl->seats, it) {
if (it->item.kbd_focus == term)
selection_finalize(&it->item, term, it->item.pointer.serial);
}
}
/*
* TODO: if we remove the selection_finalize() call above (i.e. if
* we start allowing selections to be ongoing across resizes), the
* selections pivot point coordinates *must* be added to the
* tracking points list.
*/
struct coord *const tracking_points[] = {
&term->selection.start,
&term->selection.end,

View file

@ -1158,6 +1158,10 @@ term_init(const struct config *conf, struct fdm *fdm, struct reaper *reaper,
.selection = {
.start = {-1, -1},
.end = {-1, -1},
.pivot = {
.start = {-1, -1},
.end = {-1, -1},
},
.auto_scroll = {
.fd = -1,
},