Merge branch 'apply-scrollback-multiplier-in-alternate-scroll-mode'

This commit is contained in:
Daniel Eklöf 2021-12-28 17:10:24 +01:00
commit fa1088da93
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
4 changed files with 14 additions and 7 deletions

View file

@ -51,6 +51,9 @@
* PaperColorDark and PaperColorLight themes renamed to
paper-color-dark and paper-color-light, for consistency with other
theme names.
* `[scrollback].multiplier` is now applied in “alternate scroll” mode,
where scroll events are translated to fake arrow key presses on the
alt screen (https://codeberg.org/dnkl/foot/issues/859).
### Deprecated

11
input.c
View file

@ -2576,9 +2576,10 @@ mouse_scroll(struct seat *seat, int amount, enum wl_pointer_axis axis)
}
static float
mouse_scroll_multiplier(const struct terminal *term)
mouse_scroll_multiplier(const struct terminal *term, const struct seat *seat)
{
return term->grid == &term->normal
return (term->grid == &term->normal ||
(term_mouse_grabbed(term, seat) && term->alt_scrolling))
? term->conf->scrollback.multiplier
: 1.0;
}
@ -2595,6 +2596,8 @@ wl_pointer_axis(void *data, struct wl_pointer *wl_pointer,
xassert(seat->mouse_focus != NULL);
xassert(axis < ALEN(seat->mouse.aggregated));
const struct terminal *term = seat->mouse_focus;
/*
* Aggregate scrolled amount until we get at least 1.0
*
@ -2602,7 +2605,7 @@ wl_pointer_axis(void *data, struct wl_pointer *wl_pointer,
* anything.
*/
seat->mouse.aggregated[axis] +=
mouse_scroll_multiplier(seat->mouse_focus) * wl_fixed_to_double(value);
mouse_scroll_multiplier(term, seat) * wl_fixed_to_double(value);
if (fabs(seat->mouse.aggregated[axis]) < seat->mouse_focus->cell_height)
return;
@ -2623,7 +2626,7 @@ wl_pointer_axis_discrete(void *data, struct wl_pointer *wl_pointer,
if (axis == WL_POINTER_AXIS_HORIZONTAL_SCROLL) {
/* Treat mouse wheel left/right as regular buttons */
} else
amount *= mouse_scroll_multiplier(seat->mouse_focus);
amount *= mouse_scroll_multiplier(seat->mouse_focus, seat);
mouse_scroll(seat, amount, axis);
}

View file

@ -2827,10 +2827,11 @@ report_mouse_motion(struct terminal *term, int encoded_button, int row, int col)
}
bool
term_mouse_grabbed(const struct terminal *term, struct seat *seat)
term_mouse_grabbed(const struct terminal *term, const struct seat *seat)
{
/*
* Mouse is grabbed by us, regardless of whether mouse tracking has been enabled or not.
* Mouse is grabbed by us, regardless of whether mouse tracking
* has been enabled or not.
*/
xkb_mod_mask_t mods;

View file

@ -759,7 +759,7 @@ void term_mouse_up(
void term_mouse_motion(
struct terminal *term, int button, int row, int col,
bool shift, bool alt, bool ctrl);
bool term_mouse_grabbed(const struct terminal *term, struct seat *seat);
bool term_mouse_grabbed(const struct terminal *term, const struct seat *seat);
void term_xcursor_update(struct terminal *term);
void term_xcursor_update_for_seat(struct terminal *term, struct seat *seat);