From 85945c56a56c0a4acd948c83b50ea6ab10b9930c Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Tue, 31 Mar 2026 23:22:40 +0300 Subject: test: cover non-top-anchored scroll regions --- src/pane.rs | 66 +++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/pane.rs b/src/pane.rs index 01d872a6..44238a8a 100644 --- a/src/pane.rs +++ b/src/pane.rs @@ -416,28 +416,52 @@ impl PaneRuntime { last_process_check = now; let pid = child_pid.load(Ordering::Acquire); if pid > 0 { - if let Some(job) = detect::foreground_job(pid) { - let identified = detect::identify_agent_in_job(&job); - let new_agent = identified.as_ref().map(|(agent, _)| *agent); - if new_agent != agent { - if let Some((_, process_name)) = identified { - info!( - pane = pane_id.raw(), - ?new_agent, - process = %process_name, - pgid = job.process_group_id, - "agent changed" - ); - } else { - info!( - pane = pane_id.raw(), - ?new_agent, - pgid = job.process_group_id, - "agent changed" - ); + match detect::foreground_job(pid) { + Some(job) => { + let identified = detect::identify_agent_in_job(&job); + let new_agent = identified.as_ref().map(|(agent, _)| *agent); + + debug!( + pane = pane_id.raw(), + pid, + previous_agent = ?agent, + ?new_agent, + identified_process = identified + .as_ref() + .map(|(_, name)| name.as_str()), + pgid = job.process_group_id, + processes = ?job.processes, + "foreground job probe" + ); + + if new_agent != agent { + if let Some((_, process_name)) = identified { + info!( + pane = pane_id.raw(), + ?new_agent, + process = %process_name, + pgid = job.process_group_id, + "agent changed" + ); + } else { + info!( + pane = pane_id.raw(), + ?new_agent, + pgid = job.process_group_id, + "agent changed" + ); + } + agent = new_agent; + agent_changed = true; } - agent = new_agent; - agent_changed = true; + } + None => { + debug!( + pane = pane_id.raw(), + pid, + previous_agent = ?agent, + "foreground job probe returned none" + ); } } } -- cgit v1.2.3