aboutsummaryrefslogtreecommitdiff
path: root/view.c
diff options
context:
space:
mode:
Diffstat (limited to 'view.c')
-rw-r--r--view.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/view.c b/view.c
index 8f37dcc..1d620de 100644
--- a/view.c
+++ b/view.c
@@ -738,6 +738,43 @@ size_t view_scroll_up(View *view, int lines) {
return cursor->pos;
}
+size_t view_scroll_page_up(View *view) {
+ Cursor *cursor = view->cursor;
+ if (view->start == 0) {
+ view_cursor_to(view, 0);
+ } else {
+ view_cursor_to(view, view->start-1);
+ view_redraw_bottom(view);
+ view_screenline_begin(cursor);
+ }
+ return cursor->pos;
+}
+
+size_t view_scroll_page_down(View *view) {
+ view_scroll_down(view, view->height);
+ return view_screenline_begin(view->cursor);
+}
+
+size_t view_scroll_halfpage_up(View *view) {
+ Cursor *cursor = view->cursor;
+ if (view->start == 0) {
+ view_cursor_to(view, 0);
+ } else {
+ view_cursor_to(view, view->start-1);
+ view_redraw_center(view);
+ view_screenline_begin(cursor);
+ }
+ return cursor->pos;
+}
+
+size_t view_scroll_halfpage_down(View *view) {
+ size_t end = view->end;
+ size_t pos = view_scroll_down(view, view->height/2);
+ if (pos < text_size(view->text))
+ view_cursor_to(view, end);
+ return view->cursor->pos;
+}
+
size_t view_scroll_down(View *view, int lines) {
Cursor *cursor = view->cursor;
if (view_viewport_down(view, lines)) {