diff --git a/CHANGELOG.md b/CHANGELOG.md index ee5b8da1..85906524 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -82,6 +82,9 @@ * Failure to launch when `exec(3)’:ed with an empty argv. * Pasting from the primary clipboard (mouse middle clicking) did not reset the scrollback view to the bottom. +* Wrong mouse binding triggered when doing two mouse selections in + very quick (< 300ms) succession + (https://codeberg.org/dnkl/foot/issues/883). ### Security diff --git a/input.c b/input.c index 6013634e..885ae02e 100644 --- a/input.c +++ b/input.c @@ -2046,6 +2046,13 @@ wl_pointer_motion(void *data, struct wl_pointer *wl_pointer, bool cursor_is_on_new_cell = old_col != seat->mouse.col || old_row != seat->mouse.row; + if (cursor_is_on_new_cell) { + /* Prevent multiple/different mouse bindings from + * triggering if the mouse has moved “too much” (to + * another cell) */ + seat->mouse.count = 0; + } + /* Cursor is inside the grid, i.e. *not* in the margins */ const bool cursor_is_on_grid = seat->mouse.col >= 0 && seat->mouse.row >= 0;