MCPcopy Create free account
hub / github.com/GCWing/BitFun / ensure_cursor_visible

Method ensure_cursor_visible

src/apps/cli/src/ui/text_input.rs:282–299  ·  view source on GitHub ↗

Update scroll_offset so the cursor stays visible within `visible_lines`.

(&mut self, inner_width: u16, prefix_w: usize, visible_lines: usize)

Source from the content-addressed store, hash-verified

280
281 /// Update scroll_offset so the cursor stays visible within `visible_lines`.
282 fn ensure_cursor_visible(&mut self, inner_width: u16, prefix_w: usize, visible_lines: usize) {
283 if visible_lines == 0 {
284 self.scroll_offset = 0;
285 return;
286 }
287 // Clamp scroll_offset to valid range first (content may have shrunk)
288 let total = self.visual_line_count_with_prefix(inner_width, prefix_w);
289 let max_scroll = total.saturating_sub(visible_lines);
290 if self.scroll_offset > max_scroll {
291 self.scroll_offset = max_scroll;
292 }
293 let (cursor_vrow, _) = self.cursor_visual_position(inner_width, prefix_w);
294 if cursor_vrow < self.scroll_offset {
295 self.scroll_offset = cursor_vrow;
296 } else if cursor_vrow >= self.scroll_offset + visible_lines {
297 self.scroll_offset = cursor_vrow - visible_lines + 1;
298 }
299 }
300
301 pub fn char_pos_to_byte_pos(&self, char_pos: usize) -> usize {
302 self.input

Callers 1

renderMethod · 0.80

Calls 2

Tested by

no test coverage detected