/* Scrolls pane by one view in both directions. The direction should be 1 or * -1. */ static void page_scroll(int base, int direction) { int new_pos; /* Two lines gap. */ int lines = view->window_rows - 1; int offset = lines*view->column_count; new_pos = base + direction*offset; scroll_by_files(view, direction*offset); goto_pos(new_pos); }
/* Scrolls pane by one view in both directions. The direction should be 1 or * -1. */ static void page_scroll(int base, int direction) { enum { HOR_GAP_SIZE = 2, VER_GAP_SIZE = 1 }; int offset = fview_is_transposed(view) ? MAX(1, (view->column_count - VER_GAP_SIZE))*view->window_rows : (view->window_rows - HOR_GAP_SIZE)*view->column_count; int new_pos = base + direction*offset + view->list_pos%view->run_size - base%view->run_size; new_pos = MAX(0, MIN(view->list_rows - 1, new_pos)); scroll_by_files(view, direction*offset); goto_pos(new_pos); }