mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-04 04:06:06 -05:00
selection: explicitly set direction when right-click extending
Fixes an issue where right-click-and-dragging to extend a selection caused one cell being removed from the selection. Closes #180
This commit is contained in:
parent
9209adf6fa
commit
a8fb51a34c
2 changed files with 8 additions and 0 deletions
|
|
@ -75,6 +75,8 @@
|
|||
argument in `ioctl(3)` is an `int` (for example: linux/ppc64).
|
||||
* Crash when using the mouse in alternate scroll mode in an unfocused
|
||||
window (https://codeberg.org/dnkl/foot/issues/179).
|
||||
* Character dropped from selection when "right-click-hold"-extending a
|
||||
selection (https://codeberg.org/dnkl/foot/issues/180).
|
||||
|
||||
|
||||
### Security
|
||||
|
|
|
|||
|
|
@ -485,17 +485,20 @@ selection_extend_normal(struct terminal *term, int col, int row, uint32_t serial
|
|||
assert(start->row < end->row || start->col < end->col);
|
||||
|
||||
struct coord new_start, new_end;
|
||||
enum selection_scroll_direction direction;
|
||||
|
||||
if (row < start->row || (row == start->row && col < start->col)) {
|
||||
/* Extend selection to start *before* current start */
|
||||
new_start = *end;
|
||||
new_end = (struct coord){col, row};
|
||||
direction = SELECTION_LEFT;
|
||||
}
|
||||
|
||||
else if (row > end->row || (row == end->row && col > end->col)) {
|
||||
/* Extend selection to end *after* current end */
|
||||
new_start = *start;
|
||||
new_end = (struct coord){col, row};
|
||||
direction = SELECTION_RIGHT;
|
||||
}
|
||||
|
||||
else {
|
||||
|
|
@ -509,15 +512,18 @@ selection_extend_normal(struct terminal *term, int col, int row, uint32_t serial
|
|||
/* Move start point */
|
||||
new_start = *end;
|
||||
new_end = (struct coord){col, row};
|
||||
direction = SELECTION_LEFT;
|
||||
}
|
||||
|
||||
else {
|
||||
/* Move end point */
|
||||
new_start = *start;
|
||||
new_end = (struct coord){col, row};
|
||||
direction = SELECTION_RIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
term->selection.direction = direction;
|
||||
selection_modify(term, new_start, new_end);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue