clamp render area to terminal size (#1758)
this fixes a couple of panics that would happen when trying to render something larger than the terminal, or insert history lines when the top of the viewport is at y=0.
This commit is contained in:
@@ -362,7 +362,7 @@ impl App<'_> {
|
|||||||
AppState::GitWarning { .. } => 10,
|
AppState::GitWarning { .. } => 10,
|
||||||
};
|
};
|
||||||
let mut area = terminal.viewport_area;
|
let mut area = terminal.viewport_area;
|
||||||
area.height = desired_height;
|
area.height = desired_height.min(size.height);
|
||||||
area.width = size.width;
|
area.width = size.width;
|
||||||
if area.bottom() > size.height {
|
if area.bottom() > size.height {
|
||||||
terminal
|
terminal
|
||||||
|
|||||||
@@ -36,12 +36,12 @@ pub(crate) fn insert_history_lines(terminal: &mut tui::Tui, lines: Vec<Line>) {
|
|||||||
.backend_mut()
|
.backend_mut()
|
||||||
.scroll_region_down(area.top()..screen_size.height, scroll_amount)
|
.scroll_region_down(area.top()..screen_size.height, scroll_amount)
|
||||||
.ok();
|
.ok();
|
||||||
let cursor_top = area.top() - 1;
|
let cursor_top = area.top().saturating_sub(1);
|
||||||
area.y += scroll_amount;
|
area.y += scroll_amount;
|
||||||
terminal.set_viewport_area(area);
|
terminal.set_viewport_area(area);
|
||||||
cursor_top
|
cursor_top
|
||||||
} else {
|
} else {
|
||||||
area.top() - 1
|
area.top().saturating_sub(1)
|
||||||
};
|
};
|
||||||
|
|
||||||
// Limit the scroll region to the lines from the top of the screen to the
|
// Limit the scroll region to the lines from the top of the screen to the
|
||||||
|
|||||||
Reference in New Issue
Block a user