aboutsummaryrefslogtreecommitdiff
path: root/helix-tui/src
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-05-09 09:13:50 +0000
committerBlaž Hrastnik2021-05-09 09:13:50 +0000
commitff4c1d05deee2b4b4d85c29a627fb01e60886c7f (patch)
treefb99b0abf84a43ff2280481739a17f5052698ac7 /helix-tui/src
parent1255bcb8a311c7f382f0bf66bbe791c6dfd77b30 (diff)
Replace the Clear widget with buffer.clear/clear_with.
Diffstat (limited to 'helix-tui/src')
-rw-r--r--helix-tui/src/buffer.rs20
-rw-r--r--helix-tui/src/widgets/clear.rs36
-rw-r--r--helix-tui/src/widgets/mod.rs3
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};