diff --git a/examples/async.rs b/examples/async.rs index fb61a10e..03f8aa0a 100644 --- a/examples/async.rs +++ b/examples/async.rs @@ -100,7 +100,7 @@ impl App { fn draw(&self, terminal: &mut Terminal) -> Result<()> { terminal.draw(|frame| { - let area = frame.size(); + let area = frame.area(); frame.render_widget( Line::from("ratatui async example").centered().cyan().bold(), area, diff --git a/examples/barchart.rs b/examples/barchart.rs index 947da9ae..3a027cac 100644 --- a/examples/barchart.rs +++ b/examples/barchart.rs @@ -159,7 +159,7 @@ fn run_app( fn ui(frame: &mut Frame, app: &App) { let vertical = Layout::vertical([Constraint::Ratio(1, 3), Constraint::Ratio(2, 3)]); let horizontal = Layout::horizontal([Constraint::Percentage(50), Constraint::Percentage(50)]); - let [top, bottom] = vertical.areas(frame.size()); + let [top, bottom] = vertical.areas(frame.area()); let [left, right] = horizontal.areas(bottom); let barchart = BarChart::default() diff --git a/examples/block.rs b/examples/block.rs index 02fe7500..e4b8e583 100644 --- a/examples/block.rs +++ b/examples/block.rs @@ -90,7 +90,7 @@ fn handle_events() -> Result> { } fn ui(frame: &mut Frame) { - let (title_area, layout) = calculate_layout(frame.size()); + let (title_area, layout) = calculate_layout(frame.area()); render_title(frame, title_area); diff --git a/examples/calendar.rs b/examples/calendar.rs index e913d510..d56534b9 100644 --- a/examples/calendar.rs +++ b/examples/calendar.rs @@ -57,7 +57,7 @@ fn main() -> Result<(), Box> { } fn draw(frame: &mut Frame) { - let app_area = frame.size(); + let app_area = frame.area(); let calarea = Rect { x: app_area.x + 1, diff --git a/examples/canvas.rs b/examples/canvas.rs index 069284f5..6f6dce4d 100644 --- a/examples/canvas.rs +++ b/examples/canvas.rs @@ -132,7 +132,7 @@ impl App { let horizontal = Layout::horizontal([Constraint::Percentage(50), Constraint::Percentage(50)]); let vertical = Layout::vertical([Constraint::Percentage(50), Constraint::Percentage(50)]); - let [map, right] = horizontal.areas(frame.size()); + let [map, right] = horizontal.areas(frame.area()); let [pong, boxes] = vertical.areas(right); frame.render_widget(self.map_canvas(), map); diff --git a/examples/chart.rs b/examples/chart.rs index 25672156..2ebc17ea 100644 --- a/examples/chart.rs +++ b/examples/chart.rs @@ -151,9 +151,7 @@ fn run_app( } fn ui(frame: &mut Frame, app: &App) { - let area = frame.size(); - - let [top, bottom] = Layout::vertical([Constraint::Fill(1); 2]).areas(area); + let [top, bottom] = Layout::vertical([Constraint::Fill(1); 2]).areas(frame.area()); let [animated_chart, bar_chart] = Layout::horizontal([Constraint::Fill(1), Constraint::Length(29)]).areas(top); let [line_chart, scatter] = Layout::horizontal([Constraint::Fill(1); 2]).areas(bottom); diff --git a/examples/colors.rs b/examples/colors.rs index 4c9ed254..ce2a0086 100644 --- a/examples/colors.rs +++ b/examples/colors.rs @@ -70,7 +70,7 @@ fn ui(frame: &mut Frame) { Constraint::Length(17), Constraint::Length(2), ]) - .split(frame.size()); + .split(frame.area()); render_named_colors(frame, layout[0]); render_indexed_colors(frame, layout[1]); diff --git a/examples/colors_rgb.rs b/examples/colors_rgb.rs index 02fe63ce..43c9c778 100644 --- a/examples/colors_rgb.rs +++ b/examples/colors_rgb.rs @@ -113,7 +113,7 @@ impl App { /// This is the main event loop for the app. pub fn run(mut self, mut terminal: Terminal) -> Result<()> { while self.is_running() { - terminal.draw(|frame| frame.render_widget(&mut self, frame.size()))?; + terminal.draw(|frame| frame.render_widget(&mut self, frame.area()))?; self.handle_events()?; } Ok(()) diff --git a/examples/constraint-explorer.rs b/examples/constraint-explorer.rs index b2c6bc9d..df123fb9 100644 --- a/examples/constraint-explorer.rs +++ b/examples/constraint-explorer.rs @@ -125,7 +125,7 @@ impl App { } fn draw(&self, terminal: &mut Terminal) -> io::Result<()> { - terminal.draw(|frame| frame.render_widget(self, frame.size()))?; + terminal.draw(|frame| frame.render_widget(self, frame.area()))?; Ok(()) } diff --git a/examples/constraints.rs b/examples/constraints.rs index bedecc0d..ccfaea95 100644 --- a/examples/constraints.rs +++ b/examples/constraints.rs @@ -112,7 +112,7 @@ impl App { } fn draw(self, terminal: &mut Terminal) -> io::Result<()> { - terminal.draw(|frame| frame.render_widget(self, frame.size()))?; + terminal.draw(|frame| frame.render_widget(self, frame.area()))?; Ok(()) } diff --git a/examples/custom_widget.rs b/examples/custom_widget.rs index 045d4e71..e2bc733d 100644 --- a/examples/custom_widget.rs +++ b/examples/custom_widget.rs @@ -203,7 +203,7 @@ fn ui(frame: &mut Frame, states: [State; 3]) { Constraint::Length(1), Constraint::Min(0), // ignore remaining space ]); - let [title, buttons, help, _] = vertical.areas(frame.size()); + let [title, buttons, help, _] = vertical.areas(frame.area()); frame.render_widget( Paragraph::new("Custom Widget Example (mouse enabled)"), diff --git a/examples/demo/ui.rs b/examples/demo/ui.rs index 34c8193d..09979ef0 100644 --- a/examples/demo/ui.rs +++ b/examples/demo/ui.rs @@ -14,7 +14,7 @@ use ratatui::{ use crate::app::App; pub fn draw(f: &mut Frame, app: &mut App) { - let chunks = Layout::vertical([Constraint::Length(3), Constraint::Min(0)]).split(f.size()); + let chunks = Layout::vertical([Constraint::Length(3), Constraint::Min(0)]).split(f.area()); let tabs = app .tabs .titles diff --git a/examples/demo2/app.rs b/examples/demo2/app.rs index 04893205..99f4ec32 100644 --- a/examples/demo2/app.rs +++ b/examples/demo2/app.rs @@ -71,7 +71,7 @@ impl App { fn draw(&self, terminal: &mut Terminal) -> Result<()> { terminal .draw(|frame| { - frame.render_widget(self, frame.size()); + frame.render_widget(self, frame.area()); if self.mode == Mode::Destroy { destroy::destroy(frame); } diff --git a/examples/demo2/destroy.rs b/examples/demo2/destroy.rs index 48cedc23..87a8b3fd 100644 --- a/examples/demo2/destroy.rs +++ b/examples/demo2/destroy.rs @@ -23,7 +23,7 @@ pub fn destroy(frame: &mut Frame<'_>) { return; } - let area = frame.size(); + let area = frame.area(); let buf = frame.buffer_mut(); drip(frame_count, area, buf); diff --git a/examples/docsrs.rs b/examples/docsrs.rs index 85549f76..ddd9acdd 100644 --- a/examples/docsrs.rs +++ b/examples/docsrs.rs @@ -57,7 +57,7 @@ fn main() -> io::Result<()> { fn hello_world(frame: &mut Frame) { frame.render_widget( Paragraph::new("Hello World!").block(Block::bordered().title("Greeting")), - frame.size(), + frame.area(), ); } @@ -79,7 +79,7 @@ fn layout(frame: &mut Frame) { Constraint::Length(1), ]); let horizontal = Layout::horizontal([Constraint::Ratio(1, 2); 2]); - let [title_bar, main_area, status_bar] = vertical.areas(frame.size()); + let [title_bar, main_area, status_bar] = vertical.areas(frame.area()); let [left, right] = horizontal.areas(main_area); frame.render_widget( @@ -102,7 +102,7 @@ fn styling(frame: &mut Frame) { Constraint::Length(1), Constraint::Min(0), ]) - .split(frame.size()); + .split(frame.area()); let span1 = Span::raw("Hello "); let span2 = Span::styled( diff --git a/examples/flex.rs b/examples/flex.rs index d025a1cb..453dd29e 100644 --- a/examples/flex.rs +++ b/examples/flex.rs @@ -185,7 +185,7 @@ impl App { } fn draw(self, terminal: &mut Terminal) -> io::Result<()> { - terminal.draw(|frame| frame.render_widget(self, frame.size()))?; + terminal.draw(|frame| frame.render_widget(self, frame.area()))?; Ok(()) } diff --git a/examples/gauge.rs b/examples/gauge.rs index 66521422..0b6f29ef 100644 --- a/examples/gauge.rs +++ b/examples/gauge.rs @@ -74,7 +74,7 @@ impl App { } fn draw(&self, terminal: &mut Terminal) -> Result<()> { - terminal.draw(|f| f.render_widget(self, f.size()))?; + terminal.draw(|f| f.render_widget(self, f.area()))?; Ok(()) } diff --git a/examples/hello_world.rs b/examples/hello_world.rs index 7055025a..a7dffff7 100644 --- a/examples/hello_world.rs +++ b/examples/hello_world.rs @@ -82,7 +82,7 @@ fn run(terminal: &mut Terminal>) -> Result<()> { /// draws a greeting. fn render_app(frame: &mut Frame) { let greeting = Paragraph::new("Hello World! (press 'q' to quit)"); - frame.render_widget(greeting, frame.size()); + frame.render_widget(greeting, frame.area()); } /// Check if the user has pressed 'q'. This is where you would handle events. This example just diff --git a/examples/hyperlink.rs b/examples/hyperlink.rs index 83b51266..7d37cbd7 100644 --- a/examples/hyperlink.rs +++ b/examples/hyperlink.rs @@ -56,7 +56,7 @@ impl App { fn run(self, terminal: &mut Terminal>) -> io::Result<()> { loop { - terminal.draw(|frame| frame.render_widget(&self.hyperlink, frame.size()))?; + terminal.draw(|frame| frame.render_widget(&self.hyperlink, frame.area()))?; if let Event::Key(key) = event::read()? { if matches!(key.code, KeyCode::Char('q') | KeyCode::Esc) { break; diff --git a/examples/inline.rs b/examples/inline.rs index 280b8a7c..769b7c19 100644 --- a/examples/inline.rs +++ b/examples/inline.rs @@ -240,7 +240,7 @@ fn run_app( } fn ui(f: &mut Frame, downloads: &Downloads) { - let area = f.size(); + let area = f.area(); let block = Block::new().title(block::Title::from("Progress").alignment(Alignment::Center)); f.render_widget(block, area); diff --git a/examples/layout.rs b/examples/layout.rs index cc212aa7..2334befd 100644 --- a/examples/layout.rs +++ b/examples/layout.rs @@ -80,7 +80,7 @@ fn ui(frame: &mut Frame) { Length(50), // examples Min(0), // fills remaining space ]); - let [text_area, examples_area, _] = vertical.areas(frame.size()); + let [text_area, examples_area, _] = vertical.areas(frame.area()); // title frame.render_widget( diff --git a/examples/line_gauge.rs b/examples/line_gauge.rs index fe068b03..1afb33b8 100644 --- a/examples/line_gauge.rs +++ b/examples/line_gauge.rs @@ -66,7 +66,7 @@ impl App { } fn draw(&self, terminal: &mut Terminal) -> Result<()> { - terminal.draw(|f| f.render_widget(self, f.size()))?; + terminal.draw(|f| f.render_widget(self, f.area()))?; Ok(()) } diff --git a/examples/list.rs b/examples/list.rs index a628f535..9dcf72af 100644 --- a/examples/list.rs +++ b/examples/list.rs @@ -121,7 +121,7 @@ impl TodoItem { impl App { fn run(&mut self, mut terminal: Terminal) -> io::Result<()> { while !self.should_exit { - terminal.draw(|f| f.render_widget(&mut *self, f.size()))?; + terminal.draw(|f| f.render_widget(&mut *self, f.area()))?; if let Event::Key(key) = event::read()? { self.handle_key(key); }; diff --git a/examples/minimal.rs b/examples/minimal.rs index 75e2328b..509f3e8d 100644 --- a/examples/minimal.rs +++ b/examples/minimal.rs @@ -35,7 +35,7 @@ fn main() -> Result<(), Box> { enable_raw_mode()?; execute!(terminal.backend_mut(), EnterAlternateScreen)?; loop { - terminal.draw(|frame| frame.render_widget(Text::raw("Hello World!"), frame.size()))?; + terminal.draw(|frame| frame.render_widget(Text::raw("Hello World!"), frame.area()))?; if let Event::Key(key) = event::read()? { if key.kind == KeyEventKind::Press && key.code == KeyCode::Char('q') { break; diff --git a/examples/modifiers.rs b/examples/modifiers.rs index 304c65ed..01885d69 100644 --- a/examples/modifiers.rs +++ b/examples/modifiers.rs @@ -68,7 +68,7 @@ fn run_app(terminal: &mut Terminal) -> io::Result<()> { fn ui(frame: &mut Frame) { let vertical = Layout::vertical([Constraint::Length(1), Constraint::Min(0)]); - let [text_area, main_area] = vertical.areas(frame.size()); + let [text_area, main_area] = vertical.areas(frame.area()); frame.render_widget( Paragraph::new("Note: not all terminals support all modifiers") .style(Style::default().fg(Color::Red).add_modifier(Modifier::BOLD)), diff --git a/examples/panic.rs b/examples/panic.rs index 3dc1d1e3..db2dd8db 100644 --- a/examples/panic.rs +++ b/examples/panic.rs @@ -148,5 +148,5 @@ fn ui(f: &mut Frame, app: &App) { .block(Block::bordered().title("Panic Handler Demo")) .centered(); - f.render_widget(paragraph, f.size()); + f.render_widget(paragraph, f.area()); } diff --git a/examples/paragraph.rs b/examples/paragraph.rs index 1288b263..f8ef839c 100644 --- a/examples/paragraph.rs +++ b/examples/paragraph.rs @@ -74,7 +74,7 @@ impl App { /// Draw the app to the terminal. fn draw(&mut self, terminal: &mut Tui) -> io::Result<()> { - terminal.draw(|frame| frame.render_widget(self, frame.size()))?; + terminal.draw(|frame| frame.render_widget(self, frame.area()))?; Ok(()) } diff --git a/examples/popup.rs b/examples/popup.rs index 9dcef3bb..76187fad 100644 --- a/examples/popup.rs +++ b/examples/popup.rs @@ -86,7 +86,7 @@ fn run_app(terminal: &mut Terminal, mut app: App) -> io::Result<( } fn ui(f: &mut Frame, app: &App) { - let area = f.size(); + let area = f.area(); let vertical = Layout::vertical([Constraint::Percentage(20), Constraint::Percentage(80)]); let [instructions, content] = vertical.areas(area); diff --git a/examples/ratatui-logo.rs b/examples/ratatui-logo.rs index eaf58663..4e11b0c1 100644 --- a/examples/ratatui-logo.rs +++ b/examples/ratatui-logo.rs @@ -64,9 +64,7 @@ fn logo() -> String { fn main() -> io::Result<()> { let mut terminal = init()?; - terminal.draw(|frame| { - frame.render_widget(Paragraph::new(logo()), frame.size()); - })?; + terminal.draw(|frame| frame.render_widget(Paragraph::new(logo()), frame.area()))?; sleep(Duration::from_secs(5)); restore()?; println!(); diff --git a/examples/scrollbar.rs b/examples/scrollbar.rs index f6992297..3a1bb7ad 100644 --- a/examples/scrollbar.rs +++ b/examples/scrollbar.rs @@ -119,11 +119,11 @@ fn run_app( #[allow(clippy::too_many_lines, clippy::cast_possible_truncation)] fn ui(f: &mut Frame, app: &mut App) { - let size = f.size(); + let area = f.area(); // Words made "loooong" to demonstrate line breaking. let s = "Veeeeeeeeeeeeeeeery loooooooooooooooooong striiiiiiiiiiiiiiiiiiiiiiiiiing. "; - let mut long_line = s.repeat(usize::from(size.width) / s.len() + 4); + let mut long_line = s.repeat(usize::from(area.width) / s.len() + 4); long_line.push('\n'); let chunks = Layout::vertical([ @@ -133,7 +133,7 @@ fn ui(f: &mut Frame, app: &mut App) { Constraint::Percentage(25), Constraint::Percentage(25), ]) - .split(size); + .split(area); let text = vec![ Line::from("This is a line "), diff --git a/examples/sparkline.rs b/examples/sparkline.rs index a191a477..8b7c8088 100644 --- a/examples/sparkline.rs +++ b/examples/sparkline.rs @@ -151,7 +151,7 @@ fn ui(f: &mut Frame, app: &App) { Constraint::Length(3), Constraint::Min(0), ]) - .split(f.size()); + .split(f.area()); let sparkline = Sparkline::default() .block( Block::new() diff --git a/examples/table.rs b/examples/table.rs index 85037da3..9b3765c6 100644 --- a/examples/table.rs +++ b/examples/table.rs @@ -234,7 +234,7 @@ fn run_app(terminal: &mut Terminal, mut app: App) -> io::Result<( } fn ui(f: &mut Frame, app: &mut App) { - let rects = Layout::vertical([Constraint::Min(5), Constraint::Length(3)]).split(f.size()); + let rects = Layout::vertical([Constraint::Min(5), Constraint::Length(3)]).split(f.area()); app.set_colors(); diff --git a/examples/tabs.rs b/examples/tabs.rs index 5752f2d2..1f0447b7 100644 --- a/examples/tabs.rs +++ b/examples/tabs.rs @@ -77,7 +77,7 @@ impl App { } fn draw(&self, terminal: &mut Terminal) -> Result<()> { - terminal.draw(|frame| frame.render_widget(self, frame.size()))?; + terminal.draw(|frame| frame.render_widget(self, frame.area()))?; Ok(()) } diff --git a/examples/tracing.rs b/examples/tracing.rs index 1c299f23..97476b08 100644 --- a/examples/tracing.rs +++ b/examples/tracing.rs @@ -88,11 +88,10 @@ fn handle_events(events: &mut Vec) -> Result<()> { fn ui(frame: &mut ratatui::Frame, events: &[Event]) { // To view this event, run the example with `RUST_LOG=tracing=debug cargo run --example tracing` trace!(frame_count = frame.count(), event_count = events.len()); - let area = frame.size(); let events = events.iter().map(|e| format!("{e:?}")).collect::>(); let paragraph = Paragraph::new(events.join("\n")) .block(Block::bordered().title("Tracing example. Press 'q' to quit.")); - frame.render_widget(paragraph, area); + frame.render_widget(paragraph, frame.area()); } /// Initialize the tracing subscriber to log to a file diff --git a/examples/user_input.rs b/examples/user_input.rs index b4773b32..f29edbab 100644 --- a/examples/user_input.rs +++ b/examples/user_input.rs @@ -209,7 +209,7 @@ fn ui(f: &mut Frame, app: &App) { Constraint::Length(3), Constraint::Min(1), ]); - let [help_area, input_area, messages_area] = vertical.areas(f.size()); + let [help_area, input_area, messages_area] = vertical.areas(f.area()); let (msg, style) = match app.input_mode { InputMode::Normal => ( diff --git a/src/terminal/frame.rs b/src/terminal/frame.rs index 14b50fd8..80fb4678 100644 --- a/src/terminal/frame.rs +++ b/src/terminal/frame.rs @@ -42,13 +42,25 @@ pub struct CompletedFrame<'a> { } impl Frame<'_> { - /// The size of the current frame + /// The area of the current frame /// /// This is guaranteed not to change during rendering, so may be called multiple times. /// /// If your app listens for a resize event from the backend, it should ignore the values from /// the event for any calculations that are used to render the current frame and use this value - /// instead as this is the size of the buffer that is used to render the current frame. + /// instead as this is the area of the buffer that is used to render the current frame. + pub const fn area(&self) -> Rect { + self.viewport_area + } + + /// The area of the current frame + /// + /// This is guaranteed not to change during rendering, so may be called multiple times. + /// + /// If your app listens for a resize event from the backend, it should ignore the values from + /// the event for any calculations that are used to render the current frame and use this value + /// instead as this is the area of the buffer that is used to render the current frame. + #[deprecated = "use .area() as its the more correct name"] pub const fn size(&self) -> Rect { self.viewport_area } diff --git a/src/widgets/list/rendering.rs b/src/widgets/list/rendering.rs index faa98ec4..e071f32c 100644 --- a/src/widgets/list/rendering.rs +++ b/src/widgets/list/rendering.rs @@ -1151,10 +1151,7 @@ mod tests { .scroll_padding(padding) .highlight_symbol(">> "); terminal - .draw(|f| { - let size = f.size(); - f.render_stateful_widget(list, size, &mut state); - }) + .draw(|f| f.render_stateful_widget(list, f.area(), &mut state)) .unwrap(); terminal.backend().assert_buffer_lines(expected); } @@ -1177,19 +1174,13 @@ mod tests { let list = List::new(items).scroll_padding(3).highlight_symbol(">> "); terminal - .draw(|f| { - let size = f.size(); - f.render_stateful_widget(&list, size, &mut state); - }) + .draw(|f| f.render_stateful_widget(&list, f.area(), &mut state)) .unwrap(); let offset_after_render = state.offset(); terminal - .draw(|f| { - let size = f.size(); - f.render_stateful_widget(&list, size, &mut state); - }) + .draw(|f| f.render_stateful_widget(&list, f.area(), &mut state)) .unwrap(); // Offset after rendering twice should remain the same as after once @@ -1213,10 +1204,7 @@ mod tests { let list = List::new(items).scroll_padding(1).highlight_symbol(">> "); terminal - .draw(|f| { - let size = f.size(); - f.render_stateful_widget(list, size, &mut state); - }) + .draw(|f| f.render_stateful_widget(list, f.area(), &mut state)) .unwrap(); #[rustfmt::skip] @@ -1248,10 +1236,7 @@ mod tests { let list = List::new(items).scroll_padding(2).highlight_symbol(">> "); terminal - .draw(|f| { - let size = f.size(); - f.render_stateful_widget(list, size, &mut state); - }) + .draw(|f| f.render_stateful_widget(list, f.area(), &mut state)) .unwrap(); terminal.backend().assert_buffer_lines([ diff --git a/src/widgets/paragraph.rs b/src/widgets/paragraph.rs index 09c45c20..d4ab7ef0 100644 --- a/src/widgets/paragraph.rs +++ b/src/widgets/paragraph.rs @@ -485,10 +485,7 @@ mod test { let backend = TestBackend::new(expected.area.width, expected.area.height); let mut terminal = Terminal::new(backend).unwrap(); terminal - .draw(|f| { - let size = f.size(); - f.render_widget(paragraph.clone(), size); - }) + .draw(|f| f.render_widget(paragraph.clone(), f.area())) .unwrap(); terminal.backend().assert_buffer(expected); } diff --git a/tests/state_serde.rs b/tests/state_serde.rs index 477b876a..6df31d35 100644 --- a/tests/state_serde.rs +++ b/tests/state_serde.rs @@ -63,7 +63,7 @@ where Constraint::Length(10), Constraint::Length(1), ]) - .split(f.size()); + .split(f.area()); let list = List::new(items) .highlight_symbol(">>") .block(Block::new().borders(Borders::RIGHT)); diff --git a/tests/terminal.rs b/tests/terminal.rs index 0ad5efb5..754e4bbb 100644 --- a/tests/terminal.rs +++ b/tests/terminal.rs @@ -34,14 +34,14 @@ fn terminal_draw_returns_the_completed_frame() -> Result<(), Box> { let mut terminal = Terminal::new(backend)?; let frame = terminal.draw(|f| { let paragraph = Paragraph::new("Test"); - f.render_widget(paragraph, f.size()); + f.render_widget(paragraph, f.area()); })?; assert_eq!(frame.buffer.get(0, 0).symbol(), "T"); assert_eq!(frame.area, Rect::new(0, 0, 10, 10)); terminal.backend_mut().resize(8, 8); let frame = terminal.draw(|f| { let paragraph = Paragraph::new("test"); - f.render_widget(paragraph, f.size()); + f.render_widget(paragraph, f.area()); })?; assert_eq!(frame.buffer.get(0, 0).symbol(), "t"); assert_eq!(frame.area, Rect::new(0, 0, 8, 8)); @@ -55,19 +55,19 @@ fn terminal_draw_increments_frame_count() -> Result<(), Box> { let frame = terminal.draw(|f| { assert_eq!(f.count(), 0); let paragraph = Paragraph::new("Test"); - f.render_widget(paragraph, f.size()); + f.render_widget(paragraph, f.area()); })?; assert_eq!(frame.count, 0); let frame = terminal.draw(|f| { assert_eq!(f.count(), 1); let paragraph = Paragraph::new("test"); - f.render_widget(paragraph, f.size()); + f.render_widget(paragraph, f.area()); })?; assert_eq!(frame.count, 1); let frame = terminal.draw(|f| { assert_eq!(f.count(), 2); let paragraph = Paragraph::new("test"); - f.render_widget(paragraph, f.size()); + f.render_widget(paragraph, f.area()); })?; assert_eq!(frame.count, 2); Ok(()) @@ -100,7 +100,7 @@ fn terminal_insert_before_moves_viewport() -> Result<(), Box> { terminal.draw(|f| { let paragraph = Paragraph::new("[---- Viewport ----]"); - f.render_widget(paragraph, f.size()); + f.render_widget(paragraph, f.area()); })?; terminal.backend().assert_buffer_lines([ @@ -142,7 +142,7 @@ fn terminal_insert_before_scrolls_on_large_input() -> Result<(), Box> terminal.draw(|f| { let paragraph = Paragraph::new("[---- Viewport ----]"); - f.render_widget(paragraph, f.size()); + f.render_widget(paragraph, f.area()); })?; terminal.backend().assert_buffer_lines([ @@ -194,7 +194,7 @@ fn terminal_insert_before_scrolls_on_many_inserts() -> Result<(), Box terminal.draw(|f| { let paragraph = Paragraph::new("[---- Viewport ----]"); - f.render_widget(paragraph, f.size()); + f.render_widget(paragraph, f.area()); })?; terminal.backend().assert_buffer_lines([ diff --git a/tests/widgets_barchart.rs b/tests/widgets_barchart.rs index 7b56b795..df094713 100644 --- a/tests/widgets_barchart.rs +++ b/tests/widgets_barchart.rs @@ -13,14 +13,13 @@ fn widgets_barchart_not_full_below_max_value() { let mut terminal = Terminal::new(backend).unwrap(); terminal .draw(|f| { - let size = f.size(); let barchart = BarChart::default() .block(Block::bordered()) .data(&[("empty", 0), ("half", 50), ("almost", 99), ("full", 100)]) .max(100) .bar_width(7) .bar_gap(0); - f.render_widget(barchart, size); + f.render_widget(barchart, f.area()); }) .unwrap(); terminal.backend().assert_buffer_lines([ @@ -44,7 +43,6 @@ fn widgets_barchart_group() { let mut terminal = Terminal::new(backend).unwrap(); terminal .draw(|f| { - let size = f.size(); let barchart = BarChart::default() .block(Block::bordered()) .data( @@ -66,7 +64,7 @@ fn widgets_barchart_group() { .group_gap(2) .bar_width(4) .bar_gap(1); - f.render_widget(barchart, size); + f.render_widget(barchart, f.area()); }) .unwrap(); diff --git a/tests/widgets_calendar.rs b/tests/widgets_calendar.rs index 290f92db..bb94c36d 100644 --- a/tests/widgets_calendar.rs +++ b/tests/widgets_calendar.rs @@ -16,7 +16,7 @@ fn test_render(widget: W, width: u16, height: u16, expected: &Buffer) let backend = TestBackend::new(width, height); let mut terminal = Terminal::new(backend).unwrap(); terminal - .draw(|f| f.render_widget(widget, f.size())) + .draw(|f| f.render_widget(widget, f.area())) .unwrap(); terminal.backend().assert_buffer(expected); } diff --git a/tests/widgets_canvas.rs b/tests/widgets_canvas.rs index a8a1f617..23106a5a 100644 --- a/tests/widgets_canvas.rs +++ b/tests/widgets_canvas.rs @@ -25,7 +25,7 @@ fn widgets_canvas_draw_labels() { Span::styled(label.clone(), Style::default().fg(Color::Blue)), ); }); - f.render_widget(canvas, f.size()); + f.render_widget(canvas, f.area()); }) .unwrap(); diff --git a/tests/widgets_chart.rs b/tests/widgets_chart.rs index f485150e..55ccb43d 100644 --- a/tests/widgets_chart.rs +++ b/tests/widgets_chart.rs @@ -30,7 +30,7 @@ fn axis_test_case<'line, Lines>( terminal .draw(|f| { let chart = Chart::new(vec![]).x_axis(x_axis).y_axis(y_axis); - f.render_widget(chart, f.size()); + f.render_widget(chart, f.area()); }) .unwrap(); terminal.backend().assert_buffer_lines(expected); @@ -63,7 +63,7 @@ fn widgets_chart_can_render_on_small_areas(#[case] width: u16, #[case] height: u .bounds([0.0, 0.0]) .labels(create_labels(&["0.0", "1.0"])), ); - f.render_widget(chart, f.size()); + f.render_widget(chart, f.area()); }) .unwrap(); } @@ -639,7 +639,7 @@ fn widgets_chart_top_line_styling_is_correct() { .labels(create_labels(&["a", "b"])), ) .x_axis(Axis::default().bounds([0.0, 1.0])); - f.render_widget(widget, f.size()); + f.render_widget(widget, f.area()); }) .unwrap(); diff --git a/tests/widgets_gauge.rs b/tests/widgets_gauge.rs index 5d0751d1..20ea71e4 100644 --- a/tests/widgets_gauge.rs +++ b/tests/widgets_gauge.rs @@ -19,7 +19,7 @@ fn widgets_gauge_renders() { .direction(Direction::Vertical) .margin(2) .constraints([Constraint::Percentage(50), Constraint::Percentage(50)]) - .split(f.size()); + .split(f.area()); let gauge = Gauge::default() .block(Block::bordered().title("Percentage")) @@ -68,7 +68,7 @@ fn widgets_gauge_renders_no_unicode() { .direction(Direction::Vertical) .margin(2) .constraints([Constraint::Percentage(50), Constraint::Percentage(50)]) - .split(f.size()); + .split(f.area()); let gauge = Gauge::default() .block(Block::bordered().title("Percentage")) @@ -115,7 +115,7 @@ fn widgets_gauge_applies_styles() { .fg(Color::Green) .add_modifier(Modifier::BOLD), )); - f.render_widget(gauge, f.size()); + f.render_widget(gauge, f.area()); }) .unwrap(); let mut expected = Buffer::with_lines([ @@ -167,7 +167,7 @@ fn widgets_gauge_supports_large_labels() { let gauge = Gauge::default() .percent(43) .label("43333333333333333333333333333%"); - f.render_widget(gauge, f.size()); + f.render_widget(gauge, f.area()); }) .unwrap(); terminal.backend().assert_buffer_lines(["4333333333"]); diff --git a/tests/widgets_list.rs b/tests/widgets_list.rs index 6c7015d9..52552cfa 100644 --- a/tests/widgets_list.rs +++ b/tests/widgets_list.rs @@ -34,7 +34,6 @@ fn widgets_list_should_highlight_the_selected_item() { state.select(Some(1)); terminal .draw(|f| { - let size = f.size(); let items = vec![ ListItem::new("Item 1"), ListItem::new("Item 2"), @@ -43,7 +42,7 @@ fn widgets_list_should_highlight_the_selected_item() { let list = List::new(items) .highlight_style(Style::default().bg(Color::Yellow)) .highlight_symbol(">> "); - f.render_stateful_widget(list, size, &mut state); + f.render_stateful_widget(list, f.area(), &mut state); }) .unwrap(); #[rustfmt::skip] @@ -69,7 +68,6 @@ fn widgets_list_should_highlight_the_selected_item_wide_symbol() { state.select(Some(1)); terminal .draw(|f| { - let size = f.size(); let items = vec![ ListItem::new("Item 1"), ListItem::new("Item 2"), @@ -78,7 +76,7 @@ fn widgets_list_should_highlight_the_selected_item_wide_symbol() { let list = List::new(items) .highlight_style(Style::default().bg(Color::Yellow)) .highlight_symbol(wide_symbol); - f.render_stateful_widget(list, size, &mut state); + f.render_stateful_widget(list, f.area(), &mut state); }) .unwrap(); #[rustfmt::skip] @@ -155,7 +153,6 @@ fn widgets_list_should_clamp_offset_if_items_are_removed() { state.select(Some(5)); terminal .draw(|f| { - let size = f.size(); let items = vec![ ListItem::new("Item 0"), ListItem::new("Item 1"), @@ -165,7 +162,7 @@ fn widgets_list_should_clamp_offset_if_items_are_removed() { ListItem::new("Item 5"), ]; let list = List::new(items).highlight_symbol(">> "); - f.render_stateful_widget(list, size, &mut state); + f.render_stateful_widget(list, f.area(), &mut state); }) .unwrap(); terminal.backend().assert_buffer_lines([ @@ -179,10 +176,9 @@ fn widgets_list_should_clamp_offset_if_items_are_removed() { state.select(Some(1)); terminal .draw(|f| { - let size = f.size(); let items = vec![ListItem::new("Item 3")]; let list = List::new(items).highlight_symbol(">> "); - f.render_stateful_widget(list, size, &mut state); + f.render_stateful_widget(list, f.area(), &mut state); }) .unwrap(); terminal.backend().assert_buffer_lines([ @@ -201,7 +197,6 @@ fn widgets_list_should_display_multiline_items() { state.select(Some(1)); terminal .draw(|f| { - let size = f.size(); let items = vec![ ListItem::new(vec![Line::from("Item 1"), Line::from("Item 1a")]), ListItem::new(vec![Line::from("Item 2"), Line::from("Item 2b")]), @@ -210,7 +205,7 @@ fn widgets_list_should_display_multiline_items() { let list = List::new(items) .highlight_style(Style::default().bg(Color::Yellow)) .highlight_symbol(">> "); - f.render_stateful_widget(list, size, &mut state); + f.render_stateful_widget(list, f.area(), &mut state); }) .unwrap(); let mut expected = Buffer::with_lines([ @@ -236,7 +231,6 @@ fn widgets_list_should_repeat_highlight_symbol() { state.select(Some(1)); terminal .draw(|f| { - let size = f.size(); let items = vec![ ListItem::new(vec![Line::from("Item 1"), Line::from("Item 1a")]), ListItem::new(vec![Line::from("Item 2"), Line::from("Item 2b")]), @@ -246,7 +240,7 @@ fn widgets_list_should_repeat_highlight_symbol() { .highlight_style(Style::default().bg(Color::Yellow)) .highlight_symbol(">> ") .repeat_highlight_symbol(true); - f.render_stateful_widget(list, size, &mut state); + f.render_stateful_widget(list, f.area(), &mut state); }) .unwrap(); let mut expected = Buffer::with_lines([ @@ -281,7 +275,7 @@ fn widget_list_should_not_ignore_empty_string_items() { .style(Style::default()) .highlight_style(Style::default()); - f.render_widget(list, f.size()); + f.render_widget(list, f.area()); }) .unwrap(); terminal @@ -363,7 +357,6 @@ fn widgets_list_enable_always_highlight_spacing<'line, Lines>( let mut terminal = Terminal::new(backend).unwrap(); terminal .draw(|f| { - let size = f.size(); let table = List::new(vec![ ListItem::new(vec![Line::from("Item 1"), Line::from("Item 1a")]), ListItem::new(vec![Line::from("Item 2"), Line::from("Item 2b")]), @@ -372,7 +365,7 @@ fn widgets_list_enable_always_highlight_spacing<'line, Lines>( .block(Block::bordered()) .highlight_symbol(">> ") .highlight_spacing(space); - f.render_stateful_widget(table, size, &mut state); + f.render_stateful_widget(table, f.area(), &mut state); }) .unwrap(); terminal diff --git a/tests/widgets_paragraph.rs b/tests/widgets_paragraph.rs index 0c387259..c5782e72 100644 --- a/tests/widgets_paragraph.rs +++ b/tests/widgets_paragraph.rs @@ -14,10 +14,7 @@ fn test_case(paragraph: Paragraph, expected: &Buffer) { let backend = TestBackend::new(expected.area.width, expected.area.height); let mut terminal = Terminal::new(backend).unwrap(); terminal - .draw(|f| { - let size = f.size(); - f.render_widget(paragraph, size); - }) + .draw(|f| f.render_widget(paragraph, f.area())) .unwrap(); terminal.backend().assert_buffer(expected); } @@ -56,12 +53,11 @@ fn widgets_paragraph_renders_mixed_width_graphemes() { let s = "aコンピュータ上で文字を扱う場合、"; terminal .draw(|f| { - let size = f.size(); let text = vec![Line::from(s)]; let paragraph = Paragraph::new(text) .block(Block::bordered()) .wrap(Wrap { trim: true }); - f.render_widget(paragraph, size); + f.render_widget(paragraph, f.area()); }) .unwrap(); terminal.backend().assert_buffer_lines([ diff --git a/tests/widgets_table.rs b/tests/widgets_table.rs index eb8772e9..b5d44a49 100644 --- a/tests/widgets_table.rs +++ b/tests/widgets_table.rs @@ -71,7 +71,6 @@ fn widgets_table_column_spacing_can_be_changed<'line, Lines>( let mut terminal = Terminal::new(backend).unwrap(); terminal .draw(|f| { - let size = f.size(); let table = Table::new( vec![ Row::new(vec!["Row11", "Row12", "Row13"]), @@ -88,7 +87,7 @@ fn widgets_table_column_spacing_can_be_changed<'line, Lines>( .header(Row::new(vec!["Head1", "Head2", "Head3"]).bottom_margin(1)) .block(Block::bordered()) .column_spacing(column_spacing); - f.render_widget(table, size); + f.render_widget(table, f.area()); }) .unwrap(); terminal.backend().assert_buffer_lines(expected); @@ -154,7 +153,6 @@ fn widgets_table_columns_widths_can_use_fixed_length_constraints<'line, Lines>( let mut terminal = Terminal::new(backend).unwrap(); terminal .draw(|f| { - let size = f.size(); let table = Table::new( vec![ Row::new(vec!["Row11", "Row12", "Row13"]), @@ -166,7 +164,7 @@ fn widgets_table_columns_widths_can_use_fixed_length_constraints<'line, Lines>( ) .header(Row::new(vec!["Head1", "Head2", "Head3"]).bottom_margin(1)) .block(Block::bordered()); - f.render_widget(table, size); + f.render_widget(table, f.area()); }) .unwrap(); terminal.backend().assert_buffer_lines(expected); @@ -244,7 +242,6 @@ fn widgets_table_columns_widths_can_use_percentage_constraints<'line, Lines>( let mut terminal = Terminal::new(backend).unwrap(); terminal .draw(|f| { - let size = f.size(); let table = Table::new( vec![ Row::new(vec!["Row11", "Row12", "Row13"]), @@ -257,7 +254,7 @@ fn widgets_table_columns_widths_can_use_percentage_constraints<'line, Lines>( .header(Row::new(vec!["Head1", "Head2", "Head3"]).bottom_margin(1)) .block(Block::bordered()) .column_spacing(0); - f.render_widget(table, size); + f.render_widget(table, f.area()); }) .unwrap(); terminal.backend().assert_buffer_lines(expected); @@ -339,7 +336,6 @@ fn widgets_table_columns_widths_can_use_mixed_constraints<'line, Lines>( let mut terminal = Terminal::new(backend).unwrap(); terminal .draw(|f| { - let size = f.size(); let table = Table::new( vec![ Row::new(vec!["Row11", "Row12", "Row13"]), @@ -351,7 +347,7 @@ fn widgets_table_columns_widths_can_use_mixed_constraints<'line, Lines>( ) .header(Row::new(vec!["Head1", "Head2", "Head3"]).bottom_margin(1)) .block(Block::bordered()); - f.render_widget(table, size); + f.render_widget(table, f.area()); }) .unwrap(); terminal.backend().assert_buffer_lines(expected); @@ -425,7 +421,6 @@ fn widgets_table_columns_widths_can_use_ratio_constraints<'line, Lines>( let mut terminal = Terminal::new(backend).unwrap(); terminal .draw(|f| { - let size = f.size(); let table = Table::new( vec![ Row::new(vec!["Row11", "Row12", "Row13"]), @@ -438,7 +433,7 @@ fn widgets_table_columns_widths_can_use_ratio_constraints<'line, Lines>( .header(Row::new(vec!["Head1", "Head2", "Head3"]).bottom_margin(1)) .block(Block::bordered()) .column_spacing(0); - f.render_widget(table, size); + f.render_widget(table, f.area()); }) .unwrap(); terminal.backend().assert_buffer_lines(expected); @@ -509,7 +504,6 @@ fn widgets_table_can_have_rows_with_multi_lines<'line, Lines>( let mut terminal = Terminal::new(backend).unwrap(); terminal .draw(|f| { - let size = f.size(); let table = Table::new( vec![ Row::new(vec!["Row11", "Row12", "Row13"]), @@ -527,7 +521,7 @@ fn widgets_table_can_have_rows_with_multi_lines<'line, Lines>( .block(Block::bordered()) .highlight_symbol(">> ") .column_spacing(1); - f.render_stateful_widget(table, size, &mut state); + f.render_stateful_widget(table, f.area(), &mut state); }) .unwrap(); terminal.backend().assert_buffer_lines(expected); @@ -608,7 +602,6 @@ fn widgets_table_enable_always_highlight_spacing<'line, Lines>( let mut terminal = Terminal::new(backend).unwrap(); terminal .draw(|f| { - let size = f.size(); let table = Table::new( vec![ Row::new(vec!["Row11", "Row12", "Row13"]), @@ -627,7 +620,7 @@ fn widgets_table_enable_always_highlight_spacing<'line, Lines>( .highlight_symbol(">> ") .highlight_spacing(space) .column_spacing(1); - f.render_stateful_widget(table, size, &mut state); + f.render_stateful_widget(table, f.area(), &mut state); }) .unwrap(); terminal.backend().assert_buffer_lines(expected); @@ -641,7 +634,6 @@ fn widgets_table_can_have_elements_styled_individually() { state.select(Some(0)); terminal .draw(|f| { - let size = f.size(); let table = Table::new( vec![ Row::new(vec!["Row11", "Row12", "Row13"]) @@ -668,7 +660,7 @@ fn widgets_table_can_have_elements_styled_individually() { .highlight_symbol(">> ") .highlight_style(Style::default().add_modifier(Modifier::BOLD)) .column_spacing(1); - f.render_stateful_widget(table, size, &mut state); + f.render_stateful_widget(table, f.area(), &mut state); }) .unwrap(); @@ -719,7 +711,6 @@ fn widgets_table_should_render_even_if_empty() { let mut terminal = Terminal::new(backend).unwrap(); terminal .draw(|f| { - let size = f.size(); let table = Table::new( Vec::::new(), [ @@ -731,7 +722,7 @@ fn widgets_table_should_render_even_if_empty() { .header(Row::new(vec!["Head1", "Head2", "Head3"])) .block(Block::new().borders(Borders::LEFT | Borders::RIGHT)) .column_spacing(1); - f.render_widget(table, size); + f.render_widget(table, f.area()); }) .unwrap(); terminal.backend().assert_buffer_lines([ @@ -768,10 +759,7 @@ fn widgets_table_columns_dont_panic() { let backend = TestBackend::new(table_width, 8); let mut terminal = Terminal::new(backend).unwrap(); terminal - .draw(|f| { - let size = f.size(); - f.render_stateful_widget(table, size, &mut state); - }) + .draw(|f| f.render_stateful_widget(table, f.area(), &mut state)) .unwrap(); } @@ -785,7 +773,6 @@ fn widgets_table_should_clamp_offset_if_rows_are_removed() { state.select(Some(5)); terminal .draw(|f| { - let size = f.size(); let table = Table::new( vec![ Row::new(vec!["Row01", "Row02", "Row03"]), @@ -804,7 +791,7 @@ fn widgets_table_should_clamp_offset_if_rows_are_removed() { .header(Row::new(vec!["Head1", "Head2", "Head3"]).bottom_margin(1)) .block(Block::bordered()) .column_spacing(1); - f.render_stateful_widget(table, size, &mut state); + f.render_stateful_widget(table, f.area(), &mut state); }) .unwrap(); terminal.backend().assert_buffer_lines([ @@ -822,7 +809,6 @@ fn widgets_table_should_clamp_offset_if_rows_are_removed() { state.select(Some(1)); terminal .draw(|f| { - let size = f.size(); let table = Table::new( vec![Row::new(vec!["Row31", "Row32", "Row33"])], [ @@ -834,7 +820,7 @@ fn widgets_table_should_clamp_offset_if_rows_are_removed() { .header(Row::new(vec!["Head1", "Head2", "Head3"]).bottom_margin(1)) .block(Block::bordered()) .column_spacing(1); - f.render_stateful_widget(table, size, &mut state); + f.render_stateful_widget(table, f.area(), &mut state); }) .unwrap(); terminal.backend().assert_buffer_lines([