diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-05-03 22:47:58 +0200 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-05-03 22:47:58 +0200 |
| commit | c36df73b1e3d3c7f2feeda16e79bbdb2e1a4f251 (patch) | |
| tree | 6cf577506aa96a4410cd7cfeb966f2a1f7a8cd82 /src/buffer/mod.rs | |
| parent | 73807bf83e30aa14f3aa1a75afc8ade4ff4b929c (diff) | |
| download | mail-c36df73b1e3d3c7f2feeda16e79bbdb2e1a4f251.tar.gz | |
draw inside terminal size
Diffstat (limited to 'src/buffer/mod.rs')
| -rw-r--r-- | src/buffer/mod.rs | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/buffer/mod.rs b/src/buffer/mod.rs index 0a7e9ba..3cff6f5 100644 --- a/src/buffer/mod.rs +++ b/src/buffer/mod.rs @@ -1,6 +1,6 @@ mod threads; -use crate::window::Window; +use crate::window::{Area, Window}; use std::io::{Stdin, Write}; use termion::event::Key; @@ -16,11 +16,17 @@ pub struct Client { impl Client { pub fn new<W: Write>(initial_buffer: Buffer, out: &mut W) -> Self { + let size = termion::terminal_size().unwrap(); let mut window = Window::new(); match &initial_buffer { Buffer::Threads(t) => t.fill_window(&mut window), } - window.draw(out).unwrap(); + window.draw(out, Area { + x: 1, + y: 1, + w: size.0, + h: size.1, + }).unwrap(); Self { window, buffers: vec![initial_buffer], @@ -49,7 +55,15 @@ impl Client { self.buffers.push(next_buffer); } - self.window.draw(out).unwrap(); + write!(out, "{}", termion::clear::All).unwrap(); + + let size = termion::terminal_size().unwrap(); + self.window.draw(out, Area { + x: 1, + y: 1, + w: size.0, + h: size.1, + }).unwrap(); } } } |
