mirror of
https://github.com/ratatui-org/ratatui
synced 2024-11-21 20:23:11 +00:00
fix(widgets)!: rename StatefulWidgetRef::render_ref to render_stateful_ref
This commit renames the `StatefulWidgetRef::render_ref` method to `render_stateful_ref`. This helps avoid collisions with the `WidgetRef` trait's `render_ref` method. This change is breaking and requires updating all implementations of `StatefulWidgetRef`. BREAKING CHANGE: `StatefulWidgetRef::render_ref` has been renamed to `StatefulWidgetRef::render_stateful_ref`. ```diff trait StatefulWidgetRef { type State; - fn render_ref(&self, area: Rect, buf: &mut Buffer, state: &mut Self::State) { } + fn render_stateful_ref(&self, area: Rect, buf: &mut Buffer, state: &mut Self::State) { } } ``` Partially addresses <https://github.com/ratatui-org/ratatui/issues/996>
This commit is contained in:
parent
4bfdc15b80
commit
330d071d4b
5 changed files with 33 additions and 19 deletions
|
@ -55,6 +55,20 @@ This is a quick summary of the sections below:
|
||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
### `StatefulWidgetRef::render_ref` renamed to `render_stateful_ref` [#1184]
|
||||||
|
|
||||||
|
[#1184]: https://github.com/ratatui-org/ratatui/pull/1184
|
||||||
|
|
||||||
|
This change helps avoid collisions with `WidgetRef::render_ref`.
|
||||||
|
|
||||||
|
```diff
|
||||||
|
trait StatefulWidgetRef {
|
||||||
|
type State;
|
||||||
|
- fn render_ref(&self, area: Rect, buf: &mut Buffer, state: &mut Self::State) { }
|
||||||
|
+ fn render_stateful_ref(&self, area: Rect, buf: &mut Buffer, state: &mut Self::State) { }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Prelude items added / removed ([#1149])
|
### Prelude items added / removed ([#1149])
|
||||||
|
|
||||||
The following items have been removed from the prelude:
|
The following items have been removed from the prelude:
|
||||||
|
|
|
@ -129,7 +129,7 @@ impl Frame<'_> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Render a [`StatefulWidgetRef`] to the current buffer using
|
/// Render a [`StatefulWidgetRef`] to the current buffer using
|
||||||
/// [`StatefulWidgetRef::render_ref`].
|
/// [`StatefulWidgetRef::render_stateful_ref`].
|
||||||
///
|
///
|
||||||
/// Usually the area argument is the size of the current frame or a sub-area of the current
|
/// Usually the area argument is the size of the current frame or a sub-area of the current
|
||||||
/// frame (which can be obtained using [`Layout`] to split the total area).
|
/// frame (which can be obtained using [`Layout`] to split the total area).
|
||||||
|
@ -157,7 +157,7 @@ impl Frame<'_> {
|
||||||
where
|
where
|
||||||
W: StatefulWidgetRef,
|
W: StatefulWidgetRef,
|
||||||
{
|
{
|
||||||
widget.render_ref(area, self.buffer, state);
|
widget.render_stateful_ref(area, self.buffer, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// After drawing this frame, make the cursor visible and put it at the specified (x, y)
|
/// After drawing this frame, make the cursor visible and put it at the specified (x, y)
|
||||||
|
|
|
@ -360,14 +360,14 @@ impl<W: WidgetRef> WidgetRef for Option<W> {
|
||||||
///
|
///
|
||||||
/// This trait was introduced in Ratatui 0.26.0 and is implemented for all the internal stateful
|
/// This trait was introduced in Ratatui 0.26.0 and is implemented for all the internal stateful
|
||||||
/// widgets. Implementors should prefer to implement this over the `StatefulWidget` trait and add an
|
/// widgets. Implementors should prefer to implement this over the `StatefulWidget` trait and add an
|
||||||
/// implementation of `StatefulWidget` that calls `StatefulWidgetRef::render_ref` where backwards
|
/// implementation of `StatefulWidget` that calls `StatefulWidgetRef::render_stateful_ref` where
|
||||||
/// compatibility is required.
|
/// backwards compatibility is required.
|
||||||
///
|
///
|
||||||
/// A blanket implementation of `StatefulWidget` for `&W` where `W` implements `StatefulWidgetRef`
|
/// A blanket implementation of `StatefulWidget` for `&W` where `W` implements `StatefulWidgetRef`
|
||||||
/// is provided.
|
/// is provided.
|
||||||
///
|
///
|
||||||
/// See the documentation for [`WidgetRef`] for more information on boxed widgets.
|
/// See the documentation for [`WidgetRef`] for more information on boxed widgets. See the
|
||||||
/// See the documentation for [`StatefulWidget`] for more information on stateful widgets.
|
/// documentation for [`StatefulWidget`] for more information on stateful widgets.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
|
@ -379,7 +379,7 @@ impl<W: WidgetRef> WidgetRef for Option<W> {
|
||||||
///
|
///
|
||||||
/// impl StatefulWidgetRef for PersonalGreeting {
|
/// impl StatefulWidgetRef for PersonalGreeting {
|
||||||
/// type State = String;
|
/// type State = String;
|
||||||
/// fn render_ref(&self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
/// fn render_stateful_ref(&self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
||||||
/// Line::raw(format!("Hello {}", state)).render(area, buf);
|
/// Line::raw(format!("Hello {}", state)).render(area, buf);
|
||||||
/// }
|
/// }
|
||||||
/// }
|
/// }
|
||||||
|
@ -387,7 +387,7 @@ impl<W: WidgetRef> WidgetRef for Option<W> {
|
||||||
/// impl StatefulWidget for PersonalGreeting {
|
/// impl StatefulWidget for PersonalGreeting {
|
||||||
/// type State = String;
|
/// type State = String;
|
||||||
/// fn render(self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
/// fn render(self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
||||||
/// (&self).render_ref(area, buf, state);
|
/// self.render_stateful_ref(area, buf, state);
|
||||||
/// }
|
/// }
|
||||||
/// }
|
/// }
|
||||||
///
|
///
|
||||||
|
@ -406,7 +406,7 @@ pub trait StatefulWidgetRef {
|
||||||
type State;
|
type State;
|
||||||
/// Draws the current state of the widget in the given buffer. That is the only method required
|
/// Draws the current state of the widget in the given buffer. That is the only method required
|
||||||
/// to implement a custom stateful widget.
|
/// to implement a custom stateful widget.
|
||||||
fn render_ref(&self, area: Rect, buf: &mut Buffer, state: &mut Self::State);
|
fn render_stateful_ref(&self, area: Rect, buf: &mut Buffer, state: &mut Self::State);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note: while StatefulWidgetRef is marked as unstable, the blanket implementation of StatefulWidget
|
// Note: while StatefulWidgetRef is marked as unstable, the blanket implementation of StatefulWidget
|
||||||
|
@ -420,7 +420,7 @@ pub trait StatefulWidgetRef {
|
||||||
// impl<W: StatefulWidgetRef> StatefulWidget for &W {
|
// impl<W: StatefulWidgetRef> StatefulWidget for &W {
|
||||||
// type State = W::State;
|
// type State = W::State;
|
||||||
// fn render(self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
// fn render(self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
||||||
// StatefulWidgetRef::render_ref(self, area, buf, state);
|
// self.render_stateful_ref(area, buf, state);
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
@ -583,7 +583,7 @@ mod tests {
|
||||||
|
|
||||||
impl StatefulWidgetRef for PersonalGreeting {
|
impl StatefulWidgetRef for PersonalGreeting {
|
||||||
type State = String;
|
type State = String;
|
||||||
fn render_ref(&self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
fn render_stateful_ref(&self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
||||||
Line::from(format!("Hello {state}")).render(area, buf);
|
Line::from(format!("Hello {state}")).render(area, buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -591,7 +591,7 @@ mod tests {
|
||||||
#[rstest]
|
#[rstest]
|
||||||
fn render_ref(mut buf: Buffer, mut state: String) {
|
fn render_ref(mut buf: Buffer, mut state: String) {
|
||||||
let widget = PersonalGreeting;
|
let widget = PersonalGreeting;
|
||||||
widget.render_ref(buf.area, &mut buf, &mut state);
|
widget.render_stateful_ref(buf.area, &mut buf, &mut state);
|
||||||
assert_eq!(buf, Buffer::with_lines(["Hello world "]));
|
assert_eq!(buf, Buffer::with_lines(["Hello world "]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -610,7 +610,7 @@ mod tests {
|
||||||
#[rstest]
|
#[rstest]
|
||||||
fn box_render_render(mut buf: Buffer, mut state: String) {
|
fn box_render_render(mut buf: Buffer, mut state: String) {
|
||||||
let widget = Box::new(PersonalGreeting);
|
let widget = Box::new(PersonalGreeting);
|
||||||
widget.render_ref(buf.area, &mut buf, &mut state);
|
widget.render_stateful_ref(buf.area, &mut buf, &mut state);
|
||||||
assert_eq!(buf, Buffer::with_lines(["Hello world "]));
|
assert_eq!(buf, Buffer::with_lines(["Hello world "]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -854,7 +854,7 @@ impl Widget for List<'_> {
|
||||||
impl WidgetRef for List<'_> {
|
impl WidgetRef for List<'_> {
|
||||||
fn render_ref(&self, area: Rect, buf: &mut Buffer) {
|
fn render_ref(&self, area: Rect, buf: &mut Buffer) {
|
||||||
let mut state = ListState::default();
|
let mut state = ListState::default();
|
||||||
StatefulWidgetRef::render_ref(self, area, buf, &mut state);
|
self.render_stateful_ref(area, buf, &mut state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -862,7 +862,7 @@ impl StatefulWidget for List<'_> {
|
||||||
type State = ListState;
|
type State = ListState;
|
||||||
|
|
||||||
fn render(self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
fn render(self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
||||||
StatefulWidgetRef::render_ref(&self, area, buf, state);
|
self.render_stateful_ref(area, buf, state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -870,14 +870,14 @@ impl StatefulWidget for List<'_> {
|
||||||
impl StatefulWidget for &List<'_> {
|
impl StatefulWidget for &List<'_> {
|
||||||
type State = ListState;
|
type State = ListState;
|
||||||
fn render(self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
fn render(self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
||||||
StatefulWidgetRef::render_ref(self, area, buf, state);
|
self.render_stateful_ref(area, buf, state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl StatefulWidgetRef for List<'_> {
|
impl StatefulWidgetRef for List<'_> {
|
||||||
type State = ListState;
|
type State = ListState;
|
||||||
|
|
||||||
fn render_ref(&self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
fn render_stateful_ref(&self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
||||||
buf.set_style(area, self.style);
|
buf.set_style(area, self.style);
|
||||||
self.block.render_ref(area, buf);
|
self.block.render_ref(area, buf);
|
||||||
let list_area = self.block.inner_if_some(area);
|
let list_area = self.block.inner_if_some(area);
|
||||||
|
|
|
@ -596,14 +596,14 @@ impl StatefulWidget for Table<'_> {
|
||||||
impl StatefulWidget for &Table<'_> {
|
impl StatefulWidget for &Table<'_> {
|
||||||
type State = TableState;
|
type State = TableState;
|
||||||
fn render(self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
fn render(self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
||||||
StatefulWidgetRef::render_ref(self, area, buf, state);
|
self.render_stateful_ref(area, buf, state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl StatefulWidgetRef for Table<'_> {
|
impl StatefulWidgetRef for Table<'_> {
|
||||||
type State = TableState;
|
type State = TableState;
|
||||||
|
|
||||||
fn render_ref(&self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
fn render_stateful_ref(&self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
|
||||||
buf.set_style(area, self.style);
|
buf.set_style(area, self.style);
|
||||||
self.block.render_ref(area, buf);
|
self.block.render_ref(area, buf);
|
||||||
let table_area = self.block.inner_if_some(area);
|
let table_area = self.block.inner_if_some(area);
|
||||||
|
|
Loading…
Reference in a new issue