tui: Redraw on resize
This commit is contained in:
parent
29507b550d
commit
376adde1f9
|
|
@ -18,10 +18,11 @@ use super::{HomeMessage, Message, PatchMessage};
|
||||||
/// Since the framework does not know the type of messages that are being
|
/// Since the framework does not know the type of messages that are being
|
||||||
/// passed around in the app, the following handlers need to be implemented for
|
/// passed around in the app, the following handlers need to be implemented for
|
||||||
/// each component used.
|
/// each component used.
|
||||||
|
///
|
||||||
|
/// TODO: should handle `Event::WindowResize`, which is not emitted by `termion`.
|
||||||
impl tuirealm::Component<Message, NoUserEvent> for Widget<GlobalListener> {
|
impl tuirealm::Component<Message, NoUserEvent> for Widget<GlobalListener> {
|
||||||
fn on(&mut self, event: Event<NoUserEvent>) -> Option<Message> {
|
fn on(&mut self, event: Event<NoUserEvent>) -> Option<Message> {
|
||||||
match event {
|
match event {
|
||||||
Event::WindowResize(_, _) => Some(Message::Tick),
|
|
||||||
Event::Keyboard(KeyEvent {
|
Event::Keyboard(KeyEvent {
|
||||||
code: Key::Char('q'),
|
code: Key::Char('q'),
|
||||||
..
|
..
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ use std::time::Duration;
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
|
|
||||||
use tuirealm::terminal::TerminalBridge;
|
use tuirealm::terminal::TerminalBridge;
|
||||||
|
use tuirealm::tui::layout::Rect;
|
||||||
use tuirealm::Frame;
|
use tuirealm::Frame;
|
||||||
use tuirealm::{Application, EventListenerCfg, NoUserEvent};
|
use tuirealm::{Application, EventListenerCfg, NoUserEvent};
|
||||||
|
|
||||||
|
|
@ -73,18 +74,23 @@ impl Window {
|
||||||
Message: Eq,
|
Message: Eq,
|
||||||
{
|
{
|
||||||
let mut update = true;
|
let mut update = true;
|
||||||
|
let mut resize = false;
|
||||||
|
let mut size = Rect::default();
|
||||||
let mut app = Application::init(
|
let mut app = Application::init(
|
||||||
EventListenerCfg::default().default_input_listener(Duration::from_millis(interval)),
|
EventListenerCfg::default().default_input_listener(Duration::from_millis(interval)),
|
||||||
);
|
);
|
||||||
tui.init(&mut app)?;
|
tui.init(&mut app)?;
|
||||||
|
|
||||||
while !tui.quit() {
|
while !tui.quit() {
|
||||||
if update {
|
if update || resize {
|
||||||
self.terminal
|
self.terminal
|
||||||
.raw_mut()
|
.raw_mut()
|
||||||
.draw(|frame| tui.view(&mut app, frame))?;
|
.draw(|frame| tui.view(&mut app, frame))?;
|
||||||
}
|
}
|
||||||
update = tui.update(&mut app)?;
|
update = tui.update(&mut app)?;
|
||||||
|
|
||||||
|
resize = size != self.terminal.raw().size()?;
|
||||||
|
size = self.terminal.raw().size()?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue