diff --git a/src/ui/room.rs b/src/ui/room.rs index af403b4..73737b7 100644 --- a/src/ui/room.rs +++ b/src/ui/room.rs @@ -255,7 +255,7 @@ impl EuphRoom { let mut list = self.nick_list.list(); Self::render_rows(&mut list, joined); - list.render(frame, pos, size).await; + Box::new(list).render(frame, pos, size).await; } fn render_hsplit(frame: &mut Frame, hsplit: i32) { diff --git a/src/ui/rooms.rs b/src/ui/rooms.rs index 3685f07..7f0f141 100644 --- a/src/ui/rooms.rs +++ b/src/ui/rooms.rs @@ -146,7 +146,7 @@ impl Rooms { let rooms = self.stabilize_rooms().await; let mut list = self.list.list().focus(true); self.render_rows(&mut list, rooms).await; - list.render(frame, Pos::ZERO, frame.size()).await; + Box::new(list).render(frame, Pos::ZERO, frame.size()).await; } pub async fn handle_key_event( diff --git a/src/ui/widgets.rs b/src/ui/widgets.rs index 01269c3..dd9ec22 100644 --- a/src/ui/widgets.rs +++ b/src/ui/widgets.rs @@ -8,5 +8,5 @@ use toss::frame::{Frame, Pos, Size}; pub trait Widget { fn size(&self, frame: &mut Frame, max_width: Option, max_height: Option) -> Size; - async fn render(self, frame: &mut Frame, pos: Pos, size: Size); + async fn render(self: Box, frame: &mut Frame, pos: Pos, size: Size); } diff --git a/src/ui/widgets/list.rs b/src/ui/widgets/list.rs index d70ee2c..f21bc91 100644 --- a/src/ui/widgets/list.rs +++ b/src/ui/widgets/list.rs @@ -308,7 +308,7 @@ impl Widget for List { Size::new(width as u16, height as u16) } - async fn render(self, frame: &mut Frame, pos: Pos, size: Size) { + async fn render(self: Box, frame: &mut Frame, pos: Pos, size: Size) { let mut guard = self.state.lock(); guard.stabilize(&self.rows, size.height.into()); for (i, row) in self.rows.into_iter().enumerate() { diff --git a/src/ui/widgets/text.rs b/src/ui/widgets/text.rs index 466b4e5..33bf50a 100644 --- a/src/ui/widgets/text.rs +++ b/src/ui/widgets/text.rs @@ -47,7 +47,7 @@ impl Widget for Text { Size::new(min_width as u16, min_height as u16) } - async fn render(self, frame: &mut Frame, pos: Pos, size: Size) { + async fn render(self: Box, frame: &mut Frame, pos: Pos, size: Size) { for (i, line) in self .wrapped(frame, Some(size.width)) .into_iter()