diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-11 18:25:44 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-11 18:25:44 +0300 |
| commit | e12c7a2cef6c50f736658c20d0c5a33da033ae4b (patch) | |
| tree | 71407c1fba6f6956ecd650e0deaf0726589692ed /src/ui | |
| parent | 733b109e20e82dffe8320efc2bed70c4e560da3b (diff) | |
fix: hide pane cursor while scrolled back
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/panes.rs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/ui/panes.rs b/src/ui/panes.rs index 20ac9165..818ee9fd 100644 --- a/src/ui/panes.rs +++ b/src/ui/panes.rs @@ -13,6 +13,11 @@ use crate::app::{AppState, Mode}; use crate::layout::PaneInfo; use crate::pane::PaneRuntime; +pub(crate) fn pane_is_scrolled_back(rt: &PaneRuntime) -> bool { + rt.scroll_metrics() + .is_some_and(|metrics| metrics.offset_from_bottom > 0) +} + fn stable_terminal_inner_rect(pane_inner: Rect) -> Rect { if pane_inner.width <= 4 { return pane_inner; @@ -176,7 +181,8 @@ pub(super) fn render_panes(app: &AppState, frame: &mut Frame, area: Rect) { frame.render_widget(block, info.rect); } - rt.render(frame, info.inner_rect, info.is_focused && terminal_active); + let show_cursor = info.is_focused && terminal_active && !pane_is_scrolled_back(rt); + rt.render(frame, info.inner_rect, show_cursor); render_pane_scrollbar(app, frame, info, rt); let should_dim = !info.is_focused && multi_pane && !terminal_active; |
