mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-16 22:05:21 -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
c512dc4490
commit
66f846d723
2 changed files with 8 additions and 0 deletions
|
|
@ -31,6 +31,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).
|
||||
|
||||
|
||||
## 1.5.2
|
||||
|
|
|
|||
|
|
@ -475,17 +475,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 {
|
||||
|
|
@ -499,15 +502,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