feat(frame): replace Frame::size() with Frame::area() (#1293)

Area is the more correct term for the result of this method.
The Frame::size() method is marked as deprecated and will be
removed around Ratatui version 0.30 or later.

Fixes: https://github.com/ratatui-org/ratatui/pull/1254#issuecomment-2268061409
This commit is contained in:
EdJoPaTo
2024-08-06 05:15:14 +02:00
committed by GitHub
parent bb68bc6968
commit f97e07c08a
48 changed files with 101 additions and 139 deletions

View File

@@ -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,

View File

@@ -159,7 +159,7 @@ fn run_app<B: Backend>(
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()

View File

@@ -90,7 +90,7 @@ fn handle_events() -> Result<ControlFlow<()>> {
}
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);

View File

@@ -57,7 +57,7 @@ fn main() -> Result<(), Box<dyn Error>> {
}
fn draw(frame: &mut Frame) {
let app_area = frame.size();
let app_area = frame.area();
let calarea = Rect {
x: app_area.x + 1,

View File

@@ -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);

View File

@@ -151,9 +151,7 @@ fn run_app<B: Backend>(
}
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);

View File

@@ -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]);

View File

@@ -113,7 +113,7 @@ impl App {
/// This is the main event loop for the app.
pub fn run(mut self, mut terminal: Terminal<impl Backend>) -> 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(())

View File

@@ -125,7 +125,7 @@ impl App {
}
fn draw(&self, terminal: &mut Terminal<impl Backend>) -> io::Result<()> {
terminal.draw(|frame| frame.render_widget(self, frame.size()))?;
terminal.draw(|frame| frame.render_widget(self, frame.area()))?;
Ok(())
}

View File

@@ -112,7 +112,7 @@ impl App {
}
fn draw(self, terminal: &mut Terminal<impl Backend>) -> io::Result<()> {
terminal.draw(|frame| frame.render_widget(self, frame.size()))?;
terminal.draw(|frame| frame.render_widget(self, frame.area()))?;
Ok(())
}

View File

@@ -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)"),

View File

@@ -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

View File

@@ -71,7 +71,7 @@ impl App {
fn draw(&self, terminal: &mut Terminal<impl Backend>) -> Result<()> {
terminal
.draw(|frame| {
frame.render_widget(self, frame.size());
frame.render_widget(self, frame.area());
if self.mode == Mode::Destroy {
destroy::destroy(frame);
}

View File

@@ -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);

View File

@@ -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(

View File

@@ -185,7 +185,7 @@ impl App {
}
fn draw(self, terminal: &mut Terminal<impl Backend>) -> io::Result<()> {
terminal.draw(|frame| frame.render_widget(self, frame.size()))?;
terminal.draw(|frame| frame.render_widget(self, frame.area()))?;
Ok(())
}

View File

@@ -74,7 +74,7 @@ impl App {
}
fn draw(&self, terminal: &mut Terminal<impl Backend>) -> Result<()> {
terminal.draw(|f| f.render_widget(self, f.size()))?;
terminal.draw(|f| f.render_widget(self, f.area()))?;
Ok(())
}

View File

@@ -82,7 +82,7 @@ fn run(terminal: &mut Terminal<CrosstermBackend<Stdout>>) -> 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

View File

@@ -56,7 +56,7 @@ impl App {
fn run(self, terminal: &mut Terminal<CrosstermBackend<Stdout>>) -> 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;

View File

@@ -240,7 +240,7 @@ fn run_app<B: Backend>(
}
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);

View File

@@ -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(

View File

@@ -66,7 +66,7 @@ impl App {
}
fn draw(&self, terminal: &mut Terminal<impl Backend>) -> Result<()> {
terminal.draw(|f| f.render_widget(self, f.size()))?;
terminal.draw(|f| f.render_widget(self, f.area()))?;
Ok(())
}

View File

@@ -121,7 +121,7 @@ impl TodoItem {
impl App {
fn run(&mut self, mut terminal: Terminal<impl Backend>) -> 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);
};

View File

@@ -35,7 +35,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
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;

View File

@@ -68,7 +68,7 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>) -> 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)),

View File

@@ -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());
}

View File

@@ -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(())
}

View File

@@ -86,7 +86,7 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>, 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);

View File

@@ -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!();

View File

@@ -119,11 +119,11 @@ fn run_app<B: Backend>(
#[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 "),

View File

@@ -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()

View File

@@ -234,7 +234,7 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>, 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();

View File

@@ -77,7 +77,7 @@ impl App {
}
fn draw(&self, terminal: &mut Terminal<impl Backend>) -> Result<()> {
terminal.draw(|frame| frame.render_widget(self, frame.size()))?;
terminal.draw(|frame| frame.render_widget(self, frame.area()))?;
Ok(())
}

View File

@@ -88,11 +88,10 @@ fn handle_events(events: &mut Vec<Event>) -> 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::<Vec<_>>();
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

View File

@@ -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 => (