diff options
author | Jesse Luehrs <doy@tozt.net> | 2014-05-04 18:38:36 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2014-05-04 18:38:36 -0400 |
commit | 3c4d1c9d43c80abf5a938d1f5416e7a9d4f339dd (patch) | |
tree | 90771e9240990c42df0b1c72faee74469c69641b | |
parent | 24fba6a5e6371d5e79c63c776fd4d7ee34e57f6f (diff) | |
download | runes-3c4d1c9d43c80abf5a938d1f5416e7a9d4f339dd.tar.gz runes-3c4d1c9d43c80abf5a938d1f5416e7a9d4f339dd.zip |
implement scrolling
-rw-r--r-- | src/display.c | 2 | ||||
-rw-r--r-- | src/screen.h | 1 | ||||
-rw-r--r-- | src/window-xlib.c | 14 |
3 files changed, 16 insertions, 1 deletions
diff --git a/src/display.c b/src/display.c index 185ca7c..8ecce16 100644 --- a/src/display.c +++ b/src/display.c @@ -179,7 +179,7 @@ static void runes_display_recalculate_font_metrics(RunesTerm *t) static int runes_display_draw_cell(RunesTerm *t, int row, int col) { - struct runes_cell *cell = &t->scr.rows[row + t->scr.row_top].cells[col]; + struct runes_cell *cell = &t->scr.rows[row + t->scr.row_top - t->scr.row_visible_offset].cells[col]; cairo_pattern_t *bg = NULL, *fg = NULL; int bg_is_custom = 0, fg_is_custom = 0; diff --git a/src/screen.h b/src/screen.h index 6491af1..b112de5 100644 --- a/src/screen.h +++ b/src/screen.h @@ -74,6 +74,7 @@ struct runes_screen { int row_count; int row_capacity; int row_top; + int row_visible_offset; struct runes_row *rows; struct runes_row *alternate; diff --git a/src/window-xlib.c b/src/window-xlib.c index 8065981..d792cfc 100644 --- a/src/window-xlib.c +++ b/src/window-xlib.c @@ -758,6 +758,20 @@ static int runes_window_backend_handle_builtin_button_press( runes_window_backend_paste(t, e->time); 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); + } + break; + case Button5: + if (t->scr.row_visible_offset > 0) { + t->scr.row_visible_offset--; + t->scr.dirty = 1; + runes_window_backend_flush(t); + } + break; default: break; } |