Skip to main content

vtcode_tui/core_tui/session/
impl_scroll.rs

1use super::*;
2
3impl Session {
4    pub fn scroll_offset(&self) -> usize {
5        self.scroll_manager.offset()
6    }
7
8    #[expect(dead_code)]
9    pub(crate) fn scroll_to_top(&mut self) {
10        self.mark_scrolling();
11        self.ensure_scroll_metrics();
12        let previous_offset = self.scroll_manager.offset();
13        // Inverted model: max offset = top of content
14        self.scroll_manager.scroll_to_bottom();
15        let offset_delta = self.scroll_manager.offset() as i64 - previous_offset as i64;
16        self.mouse_selection.adjust_for_scroll(offset_delta as i32);
17        self.user_scrolled = true;
18        self.mark_dirty();
19    }
20
21    #[expect(dead_code)]
22    pub(crate) fn scroll_to_bottom(&mut self) {
23        self.mark_scrolling();
24        self.ensure_scroll_metrics();
25        let previous_offset = self.scroll_manager.offset();
26        // Inverted model: offset 0 = bottom of content
27        self.scroll_manager.scroll_to_top();
28        let offset_delta = self.scroll_manager.offset() as i64 - previous_offset as i64;
29        self.mouse_selection.adjust_for_scroll(offset_delta as i32);
30        self.user_scrolled = false;
31        self.mark_dirty();
32    }
33}