mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-16 05:34:00 -04: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
|
|
@ -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