From e12c7a2cef6c50f736658c20d0c5a33da033ae4b Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Mon, 11 May 2026 18:25:44 +0300 Subject: fix: hide pane cursor while scrolled back --- src/ui/panes.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/ui') 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; -- cgit v1.2.3