From c48544e613903c617c1318b1f1cc4d7eae9daa47 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 4 May 2014 18:46:28 -0400 Subject: allow the number of lines to scroll at a time to be configurable --- src/config.c | 5 +++++ src/config.h | 2 ++ src/window-xlib.c | 18 ++++++++++-------- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/config.c b/src/config.c index 1179a3d..3a4ae4a 100644 --- a/src/config.c +++ b/src/config.c @@ -310,6 +310,8 @@ static void runes_config_set_defaults(RunesTerm *t) config->default_rows = 24; config->default_cols = 80; + + config->scroll_lines = 3; } static FILE *runes_config_get_config_file() @@ -494,6 +496,9 @@ static void runes_config_set(RunesTerm *t, char *key, char *val) else if (!strcmp(key, "cols")) { config->default_cols = runes_config_parse_uint(val); } + else if (!strcmp(key, "scroll_lines")) { + config->scroll_lines = runes_config_parse_uint(val); + } else if (!strcmp(key, "command")) { config->cmd = runes_config_parse_string(val); } diff --git a/src/config.h b/src/config.h index c22f32e..a98d9d0 100644 --- a/src/config.h +++ b/src/config.h @@ -12,6 +12,8 @@ struct runes_config { int default_rows; int default_cols; + int scroll_lines; + char *cmd; char *font_name; diff --git a/src/window-xlib.c b/src/window-xlib.c index d792cfc..96d2558 100644 --- a/src/window-xlib.c +++ b/src/window-xlib.c @@ -759,18 +759,20 @@ static int runes_window_backend_handle_builtin_button_press( return 1; break; case Button4: - if (t->scr.row_visible_offset < t->scr.row_count - t->scr.max.row) { - t->scr.row_visible_offset++; - t->scr.dirty = 1; - runes_window_backend_flush(t); + t->scr.row_visible_offset += t->config.scroll_lines; + if (t->scr.row_visible_offset > t->scr.row_count - t->scr.max.row) { + t->scr.row_visible_offset = t->scr.row_count - t->scr.max.row; } + t->scr.dirty = 1; + runes_window_backend_flush(t); break; case Button5: - if (t->scr.row_visible_offset > 0) { - t->scr.row_visible_offset--; - t->scr.dirty = 1; - runes_window_backend_flush(t); + t->scr.row_visible_offset -= t->config.scroll_lines; + if (t->scr.row_visible_offset < 0) { + t->scr.row_visible_offset = 0; } + t->scr.dirty = 1; + runes_window_backend_flush(t); break; default: break; -- cgit v1.2.3-54-g00ecf