From b6cfca110cc90a5da88e7409aa60cdfa1fefad72 Mon Sep 17 00:00:00 2001 From: James Campos Date: Wed, 25 Nov 2020 14:19:05 -0800 Subject: on_resize --- src/main.rs | 3 ++- src/view.rs | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 1792dfb..ac3d8cc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -185,6 +185,7 @@ impl Bk<'_> { match event::read()? { Event::Key(e) => view.on_key(self, e.code), + Event::Mouse(e) => view.on_mouse(self, e), Event::Resize(cols, rows) => { self.rows = rows as usize; if cols != self.cols { @@ -194,8 +195,8 @@ impl Bk<'_> { c.lines = wrap(&c.text, width); } } + view.on_resize(self); } - Event::Mouse(e) => view.on_mouse(self, e), } } diff --git a/src/view.rs b/src/view.rs index cdb2ceb..d92ad58 100644 --- a/src/view.rs +++ b/src/view.rs @@ -14,6 +14,7 @@ pub trait View { fn render(&self, bk: &Bk) -> Vec; fn on_key(&self, bk: &mut Bk, kc: KeyCode); fn on_mouse(&self, _: &mut Bk, _: MouseEvent) {} + fn on_resize(&self, _: &mut Bk) {} } // TODO render something useful? @@ -127,6 +128,9 @@ impl Nav { } } impl View for Nav { + fn on_resize(&self, bk: &mut Bk) { + self.cursor(bk); + } fn on_mouse(&self, bk: &mut Bk, e: MouseEvent) { match e { MouseEvent::Down(_, _, row, _) => self.click(bk, row as usize), @@ -273,6 +277,10 @@ impl View for Page { _ => (), } } + fn on_resize(&self, bk: &mut Bk) { + // lazy + bk.line = min(bk.line, bk.chap().lines.len() - 1); + } fn render(&self, bk: &Bk) -> Vec { let c = bk.chap(); let line_end = min(bk.line + bk.rows, c.lines.len()); -- cgit v1.2.3