aboutsummaryrefslogtreecommitdiff
path: root/alacritty_terminal/src/grid/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'alacritty_terminal/src/grid/mod.rs')
-rw-r--r--alacritty_terminal/src/grid/mod.rs36
1 files changed, 9 insertions, 27 deletions
diff --git a/alacritty_terminal/src/grid/mod.rs b/alacritty_terminal/src/grid/mod.rs
index e2cda175..2d191d20 100644
--- a/alacritty_terminal/src/grid/mod.rs
+++ b/alacritty_terminal/src/grid/mod.rs
@@ -119,13 +119,6 @@ pub enum Scroll {
Bottom,
}
-#[derive(Copy, Clone)]
-enum ViewportPosition {
- Visible(Line),
- Above,
- Below,
-}
-
impl<T: GridCell + Copy + Clone> Grid<T> {
pub fn new(lines: index::Line, cols: index::Column, scrollback: usize, template: T) -> Grid<T> {
let raw = Storage::with_capacity(lines, Row::new(cols, &template));
@@ -144,30 +137,19 @@ impl<T: GridCell + Copy + Clone> Grid<T> {
pub fn buffer_to_visible(&self, point: impl Into<Point<usize>>) -> Point<usize> {
let mut point = point.into();
- match self.buffer_line_to_visible(point.line) {
- ViewportPosition::Visible(line) => point.line = line.0,
- ViewportPosition::Above => {
- point.col = Column(0);
- point.line = 0;
- },
- ViewportPosition::Below => {
- point.col = self.num_cols();
- point.line = self.num_lines().0 - 1;
- },
- }
+ let offset = point.line.saturating_sub(self.display_offset);
- point
- }
-
- fn buffer_line_to_visible(&self, line: usize) -> ViewportPosition {
- let offset = line.saturating_sub(self.display_offset);
- if line < self.display_offset {
- ViewportPosition::Below
+ if point.line < self.display_offset {
+ point.col = self.num_cols();
+ point.line = self.num_lines().0 - 1;
} else if offset >= *self.num_lines() {
- ViewportPosition::Above
+ point.col = Column(0);
+ point.line = 0;
} else {
- ViewportPosition::Visible(self.lines - offset - 1)
+ point.line = self.lines.0 - offset - 1;
}
+
+ point
}
pub fn visible_to_buffer(&self, point: Point) -> Point<usize> {