config: add scrollback.multiplier option

This option is used to multiply the mouse scroll amount for mouse and
trackpad based scrollback scrolling.

Closes #54.
This commit is contained in:
Daniel Eklöf 2020-08-03 19:43:06 +02:00
parent 93b03c91ed
commit 36468b0406
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
5 changed files with 22 additions and 2 deletions

View file

@ -26,6 +26,8 @@
**pipe-scrollback**, but only pipes the currently selected text, if
any (https://codeberg.org/dnkl/foot/issues/51).
* **cursor.hide-when-typing** option to `footrc.
* **scrollback.multiplier** option to `footrc`
(https://codeberg.org/dnkl/foot/issues/54).
### Deprecated

View file

@ -439,6 +439,17 @@ parse_section_scrollback(const char *key, const char *value, struct config *conf
}
}
else if (strcmp(key, "multiplier") == 0) {
double multiplier;
if (!str_to_double(value, &multiplier)) {
LOG_AND_NOTIFY_ERR("%s:%d: [scrollback]: multiplier: "
"invalid value: %s", path, lineno, value);
return false;
}
conf->scrollback.multiplier = multiplier;
}
else {
LOG_AND_NOTIFY_ERR("%s:%u: [scrollback]: %s: invalid key", path, lineno, key);
return false;
@ -1218,6 +1229,7 @@ config_load(struct config *conf, const char *conf_path, bool errors_are_fatal)
.format = SCROLLBACK_INDICATOR_FORMAT_TEXT,
.text = wcsdup(L""),
},
.multiplier = 1.,
},
.colors = {
.fg = default_foreground,

View file

@ -61,6 +61,7 @@ struct config {
wchar_t *text;
} indicator;
double multiplier;
} scrollback;
struct {

View file

@ -77,6 +77,10 @@ in this order:
*lines*
Number of scrollback lines. Default: _1000_.
*multiplier*
Amount to multiply mouse scrolling with. It is a decimal number,
i.e. fractions are allowed. Default: _1.0_.
*indicator-position*
Configures the style of the scrollback position indicator. One of
*none*, *fixed* or *relative*. *none* disables the indicator

View file

@ -1544,7 +1544,8 @@ wl_pointer_axis(void *data, struct wl_pointer *wl_pointer,
* Without this, very slow scrolling will never actually scroll
* anything.
*/
seat->mouse.axis_aggregated += wl_fixed_to_double(value);
seat->mouse.axis_aggregated
+= seat->wayl->conf->scrollback.multiplier * wl_fixed_to_double(value);
if (fabs(seat->mouse.axis_aggregated) >= 1.) {
mouse_scroll(seat, round(seat->mouse.axis_aggregated));
@ -1561,7 +1562,7 @@ wl_pointer_axis_discrete(void *data, struct wl_pointer *wl_pointer,
struct seat *seat = data;
seat->mouse.have_discrete = true;
mouse_scroll(seat, discrete);
mouse_scroll(seat, seat->wayl->conf->scrollback.multiplier * discrete);
}
static void