fix: hide mobile switcher cursor

This commit is contained in:
Ogulcan Celik
2026-05-12 01:10:03 +03:00
parent 520f4272d0
commit b8c96102eb
2 changed files with 38 additions and 5 deletions
+35
View File
@@ -1962,6 +1962,41 @@ mod tests {
);
}
#[tokio::test]
async fn virtual_render_hides_focused_pane_cursor_while_mobile_switcher_open() {
let mut state = AppState::test_new();
let mut ws = crate::workspace::Workspace::test_new("test");
let pane_id = ws.tabs[0].root_pane;
ws.tabs[0].runtimes.insert(
pane_id,
crate::pane::PaneRuntime::test_with_screen_bytes(20, 5, b"left"),
);
state.workspaces = vec![ws];
state.active = Some(0);
state.selected = 0;
state.mode = crate::app::Mode::Navigate;
let area = Rect::new(0, 0, 44, 24);
let (_buffer, cursor) =
crate::server::render_stream::render_virtual(&mut state, area, true);
let pane = state
.view
.pane_infos
.iter()
.find(|info| info.id == pane_id)
.expect("focused pane info");
assert_eq!(
cursor,
Some(CursorState {
x: pane.inner_rect.x + 4,
y: pane.inner_rect.y,
visible: false,
})
);
}
#[tokio::test]
async fn virtual_render_hides_focused_pane_cursor_while_scrolled_back() {
let mut state = AppState::test_new();
+3 -5
View File
@@ -246,10 +246,6 @@ pub(crate) fn visible_hyperlinks(app_state: &AppState) -> Vec<((u16, u16), Strin
}
fn focused_terminal_cursor(app_state: &AppState) -> Option<CursorState> {
if app_state.mode != Mode::Terminal {
return None;
}
let ws_idx = app_state.active?;
let ws = app_state.workspaces.get(ws_idx)?;
let info = app_state
@@ -262,6 +258,8 @@ fn focused_terminal_cursor(app_state: &AppState) -> Option<CursorState> {
Some(CursorState {
x: cursor.x,
y: cursor.y,
visible: cursor.visible && !crate::ui::pane_is_scrolled_back(rt),
visible: app_state.mode == Mode::Terminal
&& cursor.visible
&& !crate::ui::pane_is_scrolled_back(rt),
})
}