fix resizing breaking cursor

This commit is contained in:
alice pellerin
2026-03-21 22:37:29 -05:00
parent 1a6e7882ed
commit 9e61bf396e
3 changed files with 16 additions and 14 deletions
+9 -8
View File
@@ -70,6 +70,9 @@ impl App {
match event::read().unwrap() {
Event::Resize(_, height) => {
self.window_size.rows = height as usize;
self.buffers[self.current_buffer_index]
.clamp_screen_to_primary_cursor(self.window_size);
}
Event::Key(key_event) => self.handle_key(key_event, terminal),
Event::Mouse(mouse_event) => self.handle_mouse(mouse_event),
@@ -195,21 +198,19 @@ impl App {
}
fn yank(&mut self) {
self.primary_cursor_register = self.current_buffer()
.contents[self.current_buffer().primary_cursor.range()]
let current_buffer = &self.buffers[self.current_buffer_index];
self.primary_cursor_register = current_buffer
.contents[current_buffer.primary_cursor.range()]
.to_vec();
self.other_cursor_registers = self.current_buffer().cursors
self.other_cursor_registers = current_buffer.cursors
.iter()
.map(|cursor| {
self.current_buffer().contents[cursor.range()].to_vec()
current_buffer.contents[cursor.range()].to_vec()
})
.collect();
}
pub fn current_buffer(&self) -> &Buffer {
&self.buffers[self.current_buffer_index]
}
}
impl WindowSize {
+4 -2
View File
@@ -3,14 +3,16 @@ use crate::{app::App, buffer::Buffer, custom_greys::CustomGreys};
impl Widget for &App {
fn render(self, area: Rect, buf: &mut ratatui::buffer::Buffer) {
let current_buffer = &self.buffers[self.current_buffer_index];
if self.buffers.len() == 1 {
self.current_buffer().render(area, buf);
current_buffer.render(area, buf);
} else {
let tab_bar_area = Rect::new(area.x, area.y, area.width, 1);
self.render_tab_bar().render(tab_bar_area, buf);
let buffer_area = Rect::new(area.x, area.y + 1, area.width, area.height - 1);
self.current_buffer().render(buffer_area, buf);
current_buffer.render(buffer_area, buf);
}
}
}