diff --git a/window.c b/window.c index eb1c8e7..d248af7 100644 --- a/window.c +++ b/window.c @@ -655,6 +655,28 @@ size_t window_line_down(Win *win) { return window_cursor_update(win); } +size_t window_scroll_line_up(Win *win) { + Cursor *cursor = &win->cursor; + window_scroll_lines_up(win, 1); + if(!cursor->line->next || !cursor->line->prev) + return cursor->pos; + cursor->row++; + cursor->line = cursor->line->next; + cursor->pos = pos_by_line(win, cursor->line) + cursor_offset(cursor); + return window_cursor_update(win); +} + +size_t window_scroll_line_down(Win *win) { + Cursor *cursor = &win->cursor; + window_scroll_lines_down(win, 1); + if(!cursor->line->next || !cursor->line->prev) + return cursor->pos; + cursor->row--; + cursor->line = cursor->line->prev; + cursor->pos = pos_by_line(win, cursor->line) + cursor_offset(cursor); + return window_cursor_update(win); +} + void window_update(Win *win) { wnoutrefresh(win->win); } diff --git a/window.h b/window.h index d575341..4e151f8 100644 --- a/window.h +++ b/window.h @@ -33,6 +33,8 @@ size_t window_char_next(Win*); size_t window_char_prev(Win*); size_t window_line_down(Win*); size_t window_line_up(Win*); +size_t window_scroll_line_down(Win*); +size_t window_scroll_line_up(Win*); /* place the cursor at the start ot the n-th window line, counting from 1 */ size_t window_line_goto(Win*, int n);