aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-08 12:39:34 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-08 12:39:34 -0500
commit6abfaac01daa6f1ba959c8e522d4fd439babaaee (patch)
treed38f20e67208fe417f5419d9864cffd95c464982 /src
parentd743018c4c0ae459a9586898a4dca132eecad3cb (diff)
downloadvt100-rust-6abfaac01daa6f1ba959c8e522d4fd439babaaee.tar.gz
vt100-rust-6abfaac01daa6f1ba959c8e522d4fd439babaaee.zip
ignore the scroll region when moving if we're already outside of it
Diffstat (limited to 'src')
-rw-r--r--src/grid.rs16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/grid.rs b/src/grid.rs
index 4951d25..fa5d437 100644
--- a/src/grid.rs
+++ b/src/grid.rs
@@ -315,28 +315,36 @@ impl Grid {
self.pos.col = 0;
}
+ fn in_scroll_region(&self) -> bool {
+ self.pos.row >= self.scroll_top && self.pos.row <= self.scroll_bottom
+ }
+
pub fn set_origin_mode(&mut self, mode: bool) {
self.origin_mode = mode;
self.set_pos(Pos { row: 0, col: 0 })
}
pub fn row_inc_clamp(&mut self, count: u16) {
+ let in_scroll_region = self.in_scroll_region();
self.pos.row = self.pos.row.saturating_add(count);
- self.row_clamp_bottom(true);
+ self.row_clamp_bottom(in_scroll_region);
}
pub fn row_inc_scroll(&mut self, count: u16) {
+ let in_scroll_region = self.in_scroll_region();
self.pos.row = self.pos.row.saturating_add(count);
- let lines = self.row_clamp_bottom(true);
+ let lines = self.row_clamp_bottom(in_scroll_region);
self.scroll_up(lines);
}
pub fn row_dec_clamp(&mut self, count: u16) {
+ let in_scroll_region = self.in_scroll_region();
self.pos.row = self.pos.row.saturating_sub(count);
- self.row_clamp_top(true);
+ self.row_clamp_top(in_scroll_region);
}
pub fn row_dec_scroll(&mut self, count: u16) {
+ let in_scroll_region = self.in_scroll_region();
// need to account for clamping by both row_clamp_top and by
// saturating_sub
let extra_lines = if count > self.pos.row {
@@ -345,7 +353,7 @@ impl Grid {
0
};
self.pos.row = self.pos.row.saturating_sub(count);
- let lines = self.row_clamp_top(true);
+ let lines = self.row_clamp_top(in_scroll_region);
self.scroll_down(lines + extra_lines);
}