diff --git a/src/browser.rs b/src/browser.rs index b2c07ac..eccf500 100644 --- a/src/browser.rs +++ b/src/browser.rs @@ -198,6 +198,10 @@ impl Browser { pub fn toggle_source(&mut self) { self.viewing_source = !self.viewing_source; self.scroll = 0; + self.link_focus = None; + self.active_form_line = None; + self.mouse_line = None; + self.hover_url = None; if self.viewing_source { self.lines = self.raw_html .lines() @@ -646,3 +650,27 @@ fn extract_title(html: &str) -> Option { None } } + +#[cfg(test)] +mod tests { + use super::Browser; + use crate::types::RenderedLine; + + #[test] + fn source_view_clears_interaction_indexes_for_replaced_lines() { + let mut browser = Browser::new(); + browser.raw_html = "source".to_string(); + browser.lines = vec![RenderedLine::plain("rendered")]; + browser.link_focus = Some(10); + browser.active_form_line = Some(10); + browser.mouse_line = Some(10); + browser.hover_url = Some("https://example.com".to_string()); + + browser.toggle_source(); + + assert!(browser.link_focus.is_none()); + assert!(browser.active_form_line.is_none()); + assert!(browser.mouse_line.is_none()); + assert!(browser.hover_url.is_none()); + } +}