diff options
author | Blaž Hrastnik | 2021-05-09 09:13:50 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2021-05-09 09:13:50 +0000 |
commit | ff4c1d05deee2b4b4d85c29a627fb01e60886c7f (patch) | |
tree | fb99b0abf84a43ff2280481739a17f5052698ac7 /helix-tui/src | |
parent | 1255bcb8a311c7f382f0bf66bbe791c6dfd77b30 (diff) |
Replace the Clear widget with buffer.clear/clear_with.
Diffstat (limited to 'helix-tui/src')
-rw-r--r-- | helix-tui/src/buffer.rs | 20 | ||||
-rw-r--r-- | helix-tui/src/widgets/clear.rs | 36 | ||||
-rw-r--r-- | helix-tui/src/widgets/mod.rs | 3 |
3 files changed, 20 insertions, 39 deletions
diff --git a/helix-tui/src/buffer.rs b/helix-tui/src/buffer.rs index 8a227ce7..c584ee7f 100644 --- a/helix-tui/src/buffer.rs +++ b/helix-tui/src/buffer.rs @@ -379,6 +379,26 @@ impl Buffer { } } + /// Clear an area in the buffer + pub fn clear(&mut self, area: Rect) { + for x in area.left()..area.right() { + for y in area.top()..area.bottom() { + self.get_mut(x, y).reset(); + } + } + } + + /// Clear an area in the buffer with a default style. + pub fn clear_with(&mut self, area: Rect, style: Style) { + for x in area.left()..area.right() { + for y in area.top()..area.bottom() { + let cell = self.get_mut(x, y); + cell.reset(); + cell.set_style(style); + } + } + } + /// Merge an other buffer into this one pub fn merge(&mut self, other: &Buffer) { let area = self.area.union(other.area); diff --git a/helix-tui/src/widgets/clear.rs b/helix-tui/src/widgets/clear.rs deleted file mode 100644 index d1da40de..00000000 --- a/helix-tui/src/widgets/clear.rs +++ /dev/null @@ -1,36 +0,0 @@ -use crate::buffer::Buffer; -use crate::layout::Rect; -use crate::widgets::Widget; - -/// A widget to to clear/reset a certain area to allow overdrawing (e.g. for popups) -/// -/// # Examples -/// -/// ``` -/// # use helix_tui::widgets::{Clear, Block, Borders}; -/// # use helix_tui::layout::Rect; -/// # use helix_tui::Frame; -/// # use helix_tui::backend::Backend; -/// fn draw_on_clear<B: Backend>(f: &mut Frame<B>, area: Rect) { -/// let block = Block::default().title("Block").borders(Borders::ALL); -/// f.render_widget(Clear, area); // <- this will clear/reset the area first -/// f.render_widget(block, area); // now render the block widget -/// } -/// ``` -/// -/// # Popup Example -/// -/// For a more complete example how to utilize `Clear` to realize popups see -/// the example `examples/popup.rs` -#[derive(Debug, Clone)] -pub struct Clear; - -impl Widget for Clear { - fn render(self, area: Rect, buf: &mut Buffer) { - for x in area.left()..area.right() { - for y in area.top()..area.bottom() { - buf.get_mut(x, y).reset(); - } - } - } -} diff --git a/helix-tui/src/widgets/mod.rs b/helix-tui/src/widgets/mod.rs index 76eb73c1..5a48e9b5 100644 --- a/helix-tui/src/widgets/mod.rs +++ b/helix-tui/src/widgets/mod.rs @@ -9,17 +9,14 @@ //! - [`List`] //! - [`Table`] //! - [`Paragraph`] -//! - [`Clear`] mod block; -mod clear; // mod list; mod paragraph; mod reflow; // mod table; pub use self::block::{Block, BorderType}; -pub use self::clear::Clear; // pub use self::list::{List, ListItem, ListState}; pub use self::paragraph::{Paragraph, Wrap}; // pub use self::table::{Cell, Row, Table, TableState}; |