mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-14 04:27:57 -05:00
selection: don't automatically no-op operations if selection isn't enabled
When the client is capturing the mouse, selection can only be done by holding done shift. This is why a lot of selection functions are no-ops if selection isn't currently enabled. However, there are many cases where we actually need to modify the selection. In particular, selection_cancel(). Thus, only check for enabled selection when we're dealing with user input. Bonus: this also fixes a bug where an ongoing selection were finalized as soon as the user released shift, even if he was still holding down the mouse button.
This commit is contained in:
parent
38c050746d
commit
e4a2d41f51
3 changed files with 25 additions and 29 deletions
31
input.c
31
input.c
|
|
@ -1176,26 +1176,29 @@ wl_pointer_button(void *data, struct wl_pointer *wl_pointer,
|
|||
if (button == BTN_LEFT && wayl->mouse.count <= 3) {
|
||||
selection_cancel(term);
|
||||
|
||||
switch (wayl->mouse.count) {
|
||||
case 1:
|
||||
selection_start(
|
||||
term, wayl->mouse.col, wayl->mouse.row,
|
||||
wayl->kbd.ctrl ? SELECTION_BLOCK : SELECTION_NORMAL);
|
||||
break;
|
||||
if (selection_enabled(term)) {
|
||||
switch (wayl->mouse.count) {
|
||||
case 1:
|
||||
selection_start(
|
||||
term, wayl->mouse.col, wayl->mouse.row,
|
||||
wayl->kbd.ctrl ? SELECTION_BLOCK : SELECTION_NORMAL);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
selection_mark_word(term, wayl->mouse.col, wayl->mouse.row,
|
||||
wayl->kbd.ctrl, serial);
|
||||
break;
|
||||
case 2:
|
||||
selection_mark_word(term, wayl->mouse.col, wayl->mouse.row,
|
||||
wayl->kbd.ctrl, serial);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
selection_mark_row(term, wayl->mouse.row, serial);
|
||||
break;
|
||||
case 3:
|
||||
selection_mark_row(term, wayl->mouse.row, serial);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if (button == BTN_RIGHT && wayl->mouse.count == 1) {
|
||||
selection_extend(term, wayl->mouse.col, wayl->mouse.row, serial);
|
||||
if (selection_enabled(term))
|
||||
selection_extend(term, wayl->mouse.col, wayl->mouse.row, serial);
|
||||
}
|
||||
|
||||
else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue