From 2c7bb9a4d3ce3ead6de4ca6485ca67c44c0bd1c1 Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Sat, 10 Mar 2018 20:24:10 +0100 Subject: Add scrollback hotkeys This offers a few additional hotkeys that can be used in combination with scrollback. None of these are used by default yet. This implements the following bindings: - ScrollPageUp: Scroll exactly one screen height up - ScrollPageDown: Scroll exactly one screen height down - ScrollToTop: Scroll as far up as possible - ScrollToBottom: Scroll as far down as possible This fixes #1151. --- src/grid/mod.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/grid') diff --git a/src/grid/mod.rs b/src/grid/mod.rs index a52c27c5..ac761adc 100644 --- a/src/grid/mod.rs +++ b/src/grid/mod.rs @@ -176,6 +176,26 @@ impl Grid { self.display_offset = 0; } + pub fn scroll_to_top(&mut self) { + self.display_offset = self.scroll_limit; + } + + pub fn scroll_page_up(&mut self) { + if self.display_offset + self.lines.0 >= self.scroll_limit { + self.display_offset = self.scroll_limit; + } else { + self.display_offset += self.lines.0; + } + } + + pub fn scroll_page_down(&mut self) { + if self.display_offset <= self.lines.0 { + self.display_offset = 0; + } else { + self.display_offset -= self.lines.0; + } + } + pub fn resize(&mut self, lines: index::Line, cols: index::Column) { // Check that there's actually work to do and return early if not if lines == self.lines && cols == self.cols { -- cgit