1
0
зеркало из https://github.com/glebtv/tui-textarea.git synced 2026-09-08 08:25:51 +03:00

fix warnings and compile errors due to ratatui v0.28 update

Этот коммит содержится в:
rhysd
2024-08-08 00:12:17 +09:00
родитель 5d77bf8a9a
Коммит 9650a1171a
12 изменённых файлов: 32 добавлений и 21 удалений

Просмотреть файл

@@ -3,7 +3,7 @@
use ratatui::backend::{Backend, WindowSize}; use ratatui::backend::{Backend, WindowSize};
use ratatui::buffer::Cell; use ratatui::buffer::Cell;
use ratatui::layout::{Rect, Size}; use ratatui::layout::{Position, Size};
use ratatui::Terminal; use ratatui::Terminal;
use std::io; use std::io;
use tui_textarea::TextArea; use tui_textarea::TextArea;
@@ -75,10 +75,8 @@ impl Backend for DummyBackend {
} }
#[inline] #[inline]
fn size(&self) -> io::Result<Rect> { fn size(&self) -> io::Result<Size> {
Ok(Rect { Ok(Size {
x: 0,
y: 0,
width: self.width, width: self.width,
height: self.height, height: self.height,
}) })
@@ -102,6 +100,19 @@ impl Backend for DummyBackend {
fn flush(&mut self) -> io::Result<()> { fn flush(&mut self) -> io::Result<()> {
Ok(()) Ok(())
} }
#[inline]
fn get_cursor_position(&mut self) -> io::Result<Position> {
let (x, y) = self.cursor;
Ok(Position { x, y })
}
#[inline]
fn set_cursor_position<P: Into<Position>>(&mut self, position: P) -> io::Result<()> {
let Position { x, y } = position.into();
self.cursor = (x, y);
Ok(())
}
} }
#[inline] #[inline]
@@ -116,6 +127,6 @@ pub trait TerminalExt {
impl TerminalExt for Terminal<DummyBackend> { impl TerminalExt for Terminal<DummyBackend> {
#[inline] #[inline]
fn draw_textarea(&mut self, textarea: &TextArea<'_>) { fn draw_textarea(&mut self, textarea: &TextArea<'_>) {
self.draw(|f| f.render_widget(textarea, f.size())).unwrap(); self.draw(|f| f.render_widget(textarea, f.area())).unwrap();
} }
} }

Просмотреть файл

@@ -185,7 +185,7 @@ impl<'a> Editor<'a> {
); );
self.term.draw(|f| { self.term.draw(|f| {
let chunks = layout.split(f.size()); let chunks = layout.split(f.area());
if search_height > 0 { if search_height > 0 {
f.render_widget(&self.search.textarea, chunks[0]); f.render_widget(&self.search.textarea, chunks[0]);

Просмотреть файл

@@ -26,7 +26,7 @@ fn main() -> io::Result<()> {
loop { loop {
term.draw(|f| { term.draw(|f| {
f.render_widget(&textarea, f.size()); f.render_widget(&textarea, f.area());
})?; })?;
match crossterm::event::read()?.into() { match crossterm::event::read()?.into() {
Input { key: Key::Esc, .. } => break, Input { key: Key::Esc, .. } => break,

Просмотреть файл

@@ -30,7 +30,7 @@ fn main() -> io::Result<()> {
loop { loop {
term.draw(|f| { term.draw(|f| {
let chunks = layout.split(f.size()); let chunks = layout.split(f.area());
f.render_widget(&textarea, chunks[0]); f.render_widget(&textarea, chunks[0]);
})?; })?;

Просмотреть файл

@@ -49,7 +49,7 @@ fn main() -> io::Result<()> {
loop { loop {
term.draw(|f| { term.draw(|f| {
let chunks = layout.split(f.size()); let chunks = layout.split(f.area());
f.render_widget(&textarea, chunks[0]); f.render_widget(&textarea, chunks[0]);
})?; })?;

Просмотреть файл

@@ -52,7 +52,7 @@ fn main() -> io::Result<()> {
loop { loop {
term.draw(|f| { term.draw(|f| {
let chunks = layout.split(f.size()); let chunks = layout.split(f.area());
for (textarea, chunk) in textarea.iter().zip(chunks.iter()) { for (textarea, chunk) in textarea.iter().zip(chunks.iter()) {
f.render_widget(textarea, *chunk); f.render_widget(textarea, *chunk);
} }

Просмотреть файл

@@ -57,7 +57,7 @@ fn main() -> Result<(), Box<dyn Error>> {
Event::Tick => {} Event::Tick => {}
} }
term.draw(|f| { term.draw(|f| {
f.render_widget(&textarea, f.size()); f.render_widget(&textarea, f.area());
})?; })?;
} }

Просмотреть файл

@@ -22,7 +22,7 @@ fn main() -> Result<(), Box<dyn Error>> {
// The event loop // The event loop
loop { loop {
term.draw(|f| { term.draw(|f| {
f.render_widget(&textarea, f.size()); f.render_widget(&textarea, f.area());
})?; })?;
if let Some(input) = term if let Some(input) = term

Просмотреть файл

@@ -33,7 +33,7 @@ fn main() -> io::Result<()> {
let chunks = Layout::default() let chunks = Layout::default()
.direction(Direction::Vertical) .direction(Direction::Vertical)
.constraints([Constraint::Length(height), Constraint::Min(0)]) .constraints([Constraint::Length(height), Constraint::Min(0)])
.split(f.size()); .split(f.area());
f.render_widget(&textarea, chunks[0]); f.render_widget(&textarea, chunks[0]);
})?; })?;
match crossterm::event::read()?.into() { match crossterm::event::read()?.into() {

Просмотреть файл

@@ -417,7 +417,7 @@ fn main() -> io::Result<()> {
let mut vim = Vim::new(Mode::Normal); let mut vim = Vim::new(Mode::Normal);
loop { loop {
term.draw(|f| f.render_widget(&textarea, f.size()))?; term.draw(|f| f.render_widget(&textarea, f.area()))?;
vim = match vim.transition(crossterm::event::read()?.into(), &mut textarea) { vim = match vim.transition(crossterm::event::read()?.into(), &mut textarea) {
Transition::Mode(mode) if vim.mode != mode => { Transition::Mode(mode) if vim.mode != mode => {

Просмотреть файл

@@ -78,8 +78,8 @@ impl fmt::Display for YankText {
/// println!("Lines: {:?}", textarea.lines()); /// println!("Lines: {:?}", textarea.lines());
/// ``` /// ```
/// ///
/// It implements [`ratatui::widgets::Widget`] trait so it can be rendered to a /// It implements [`ratatui::widgets::Widget`] trait so it can be rendered to a terminal screen via
/// terminal screen via [`ratatui::terminal::Frame::render_widget`] method. /// [`ratatui::Frame::render_widget`] method.
/// ```no_run /// ```no_run
/// use ratatui::backend::CrosstermBackend; /// use ratatui::backend::CrosstermBackend;
/// use ratatui::layout::{Constraint, Direction, Layout}; /// use ratatui::layout::{Constraint, Direction, Layout};
@@ -96,7 +96,7 @@ impl fmt::Display for YankText {
/// ///
/// loop { /// loop {
/// term.draw(|f| { /// term.draw(|f| {
/// let chunks = layout.split(f.size()); /// let chunks = layout.split(f.area());
/// f.render_widget(&textarea, chunks[0]); /// f.render_widget(&textarea, chunks[0]);
/// }).unwrap(); /// }).unwrap();
/// ///
@@ -1616,7 +1616,7 @@ impl<'a> TextArea<'a> {
} }
/// Build a ratatui (or tui-rs) widget to render the current state of the textarea. The widget instance returned /// Build a ratatui (or tui-rs) widget to render the current state of the textarea. The widget instance returned
/// from this method can be rendered with [`ratatui::terminal::Frame::render_widget`]. /// from this method can be rendered with [`ratatui::Frame::render_widget`].
/// ///
/// This method was deprecated at v0.5.3 and is no longer necessary. Instead you can directly pass `&TextArea` /// This method was deprecated at v0.5.3 and is no longer necessary. Instead you can directly pass `&TextArea`
/// reference to the `Frame::render_widget` method call. /// reference to the `Frame::render_widget` method call.

Просмотреть файл

@@ -15,8 +15,8 @@ use tui::text::Spans as Line;
// instance. In the case, the TextArea instance cannot be accessed from any other objects since it is mutablly // instance. In the case, the TextArea instance cannot be accessed from any other objects since it is mutablly
// borrowed. // borrowed.
// //
// `ratatui::terminal::Frame::render_stateful_widget` would be an assumed way to render a stateful widget. But at this // `ratatui::Frame::render_stateful_widget` would be an assumed way to render a stateful widget. But at this
// point we stick with using `ratatui::terminal::Frame::render_widget` because it is simpler API. Users don't need to // point we stick with using `ratatui::Frame::render_widget` because it is simpler API. Users don't need to
// manage states of textarea instances separately. // manage states of textarea instances separately.
// https://docs.rs/ratatui/latest/ratatui/terminal/struct.Frame.html#method.render_stateful_widget // https://docs.rs/ratatui/latest/ratatui/terminal/struct.Frame.html#method.render_stateful_widget
#[derive(Default, Debug)] #[derive(Default, Debug)]