mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
partial fix for resize
This commit is contained in:
parent
6660416fd2
commit
3042e9e3a8
1 changed files with 12 additions and 12 deletions
|
|
@ -82,16 +82,13 @@ impl Tui {
|
|||
exited.store(true, Ordering::Relaxed);
|
||||
},
|
||||
_ => {
|
||||
if let Err(e) = state.write().unwrap().handle(&TuiInput {
|
||||
event,
|
||||
exited: exited.clone()
|
||||
}) {
|
||||
let exited = exited.clone();
|
||||
if let Err(e) = state.write().unwrap().handle(&TuiInput { event, exited }) {
|
||||
panic!("{e}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//engine.read().unwrap().handle(&mut *state.write().unwrap()).expect("handle failed");
|
||||
})
|
||||
}
|
||||
fn spawn_render_thread <R: Component<Tui> + Sized + 'static> (
|
||||
|
|
@ -107,19 +104,22 @@ impl Tui {
|
|||
if exited.fetch_and(true, Ordering::Relaxed) {
|
||||
break
|
||||
}
|
||||
let size = engine.read().unwrap().backend.size().expect("get size failed");
|
||||
if let Ok(state) = state.try_read() {
|
||||
let area = engine.read().unwrap().backend.size().expect("get size failed").xywh();
|
||||
let mut output = TuiOutput { buffer, area };
|
||||
let mut output = TuiOutput { buffer, area: size.xywh() };
|
||||
state.render(&mut output).expect("render failed");
|
||||
buffer = engine.write().unwrap().flip(output.buffer);
|
||||
buffer = engine.write().unwrap().flip(output.buffer, size);
|
||||
}
|
||||
std::thread::sleep(sleep);
|
||||
})
|
||||
}
|
||||
//pub fn buffer (&mut self) -> &mut Buffer {
|
||||
//&mut self.buffers[self.buffer]
|
||||
//}
|
||||
fn flip (&mut self, mut buffer: Buffer) -> Buffer {
|
||||
fn flip (&mut self, mut buffer: Buffer, size: ratatui::prelude::Rect) -> Buffer {
|
||||
if buffer.area != size {
|
||||
buffer.resize(size);
|
||||
}
|
||||
if self.buffer.area != size {
|
||||
self.buffer.resize(size);
|
||||
}
|
||||
let updates = self.buffer.diff(&buffer);
|
||||
self.backend.draw(updates.into_iter()).expect("failed to render");
|
||||
self.backend.flush().expect("failed to flush output buffer");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue