aboutsummaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-11 18:25:44 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-11 18:25:44 +0300
commite12c7a2cef6c50f736658c20d0c5a33da033ae4b (patch)
tree71407c1fba6f6956ecd650e0deaf0726589692ed /src/ui
parent733b109e20e82dffe8320efc2bed70c4e560da3b (diff)
fix: hide pane cursor while scrolled back
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/panes.rs8
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;