diff options
| -rw-r--r-- | src/main.rs | 3 | ||||
| -rw-r--r-- | src/view.rs | 8 | 
2 files changed, 10 insertions, 1 deletions
| 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<String>;      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<String> {          let c = bk.chap();          let line_end = min(bk.line + bk.rows, c.lines.len()); | 
