From f26ca5e35babece5c4b1960fe18bbb331af4c10d Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Tue, 30 May 2017 08:35:07 -0400 Subject: [PATCH] Added column tracking to page up/dn --- lib/view.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/view.c b/lib/view.c index 870cb8a..66d20b8 100644 --- a/lib/view.c +++ b/lib/view.c @@ -573,12 +573,13 @@ void view_scrollpage(View* view, int move) { move = (move < 0 ? -1 : 1) * view->nrows; view_scroll(view, move); size_t off = view->rows[view->nrows/2]->off; - size_t scrbeg = view->rows[0]->off; - size_t scrend = view->rows[view->nrows-1]->off + view->rows[view->nrows-1]->rlen - 1; - if (scrbeg == 0) - off = 0; - else if (scrend >= buf_end(&(view->buffer))) - off = view->rows[view->nrows-1]->off; + +// size_t scrbeg = view->rows[0]->off; +// size_t scrend = view->rows[view->nrows-1]->off + view->rows[view->nrows-1]->rlen - 1; +// if (scrbeg == 0) +// off = 0; +// else if (scrend >= buf_end(&(view->buffer))) +// off = view->rows[view->nrows-1]->off; // size_t off = (move == UP ? view->rows[0]->off : view->rows[view->nrows/2]->off); // if (row != SIZE_MAX && col != SIZE_MAX) { @@ -587,6 +588,12 @@ void view_scrollpage(View* view, int move) { // off = view->rows[row]->off + view->rows[row]->rlen - 1; // } + if (row != SIZE_MAX && col != SIZE_MAX) + if (col >= view->rows[view->nrows/2]->rlen) + off = view->rows[view->nrows/2]->off + view->rows[view->nrows/2]->rlen - 1; + else + off += col; + view_jumpto(view, false, off); view->sync_needed = false; } -- 2.52.0