MCPcopy Create free account
hub / github.com/Eeive/Evcode-ide / scroll_editor_file

Function scroll_editor_file

src/app/mouse.rs:71–96  ·  view source on GitHub ↗
(
    file: &mut crate::editor::OpenFile,
    delta: isize,
    visible_height: usize,
)

Source from the content-addressed store, hash-verified

69}
70
71pub fn scroll_editor_file(
72 file: &mut crate::editor::OpenFile,
73 delta: isize,
74 visible_height: usize,
75) {
76 let visible_height = visible_height.max(1);
77 let max_scroll = file.buffer.line_count().saturating_sub(visible_height);
78
79 file.scroll_top = if delta.is_negative() {
80 file.scroll_top.saturating_sub(delta.unsigned_abs())
81 } else {
82 file.scroll_top
83 .saturating_add(delta as usize)
84 .min(max_scroll)
85 };
86
87 let (cursor_row, cursor_col) = file.buffer.cursor();
88 if cursor_row < file.scroll_top {
89 file.buffer.set_cursor(file.scroll_top, cursor_col);
90 } else {
91 let last_visible = file.scroll_top + visible_height.saturating_sub(1);
92 if cursor_row > last_visible {
93 file.buffer.set_cursor(last_visible, cursor_col);
94 }
95 }
96}
97
98pub fn position_editor_cursor_from_mouse(
99 file: &mut crate::editor::OpenFile,

Callers 1

handle_mouseMethod · 0.85

Calls 3

cursorMethod · 0.80
set_cursorMethod · 0.80
line_countMethod · 0.45

Tested by

no test coverage detected