mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-26 03:13:29 +04:00
Replace the Clear widget with buffer.clear/clear_with.
This commit is contained in:
parent
1255bcb8a3
commit
ff4c1d05de
@ -202,14 +202,7 @@ fn render(&self, area: Rect, surface: &mut Surface, cx: &mut Context) {
|
|||||||
|
|
||||||
// clear area
|
// clear area
|
||||||
let background = cx.editor.theme.get("ui.popup");
|
let background = cx.editor.theme.get("ui.popup");
|
||||||
for y in area.top()..area.bottom() {
|
surface.clear_with(area, background);
|
||||||
for x in area.left()..area.right() {
|
|
||||||
let cell = surface.get_mut(x, y);
|
|
||||||
cell.reset();
|
|
||||||
// cell.symbol.clear();
|
|
||||||
cell.set_style(background);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
doc.render(area, surface, cx);
|
doc.render(area, surface, cx);
|
||||||
}
|
}
|
||||||
None => (),
|
None => (),
|
||||||
|
@ -205,14 +205,7 @@ fn render(&self, area: Rect, surface: &mut Surface, cx: &mut Context) {
|
|||||||
|
|
||||||
// clear area
|
// clear area
|
||||||
let background = cx.editor.theme.get("ui.background");
|
let background = cx.editor.theme.get("ui.background");
|
||||||
for y in area.top()..area.bottom() {
|
surface.clear_with(area, background);
|
||||||
for x in area.left()..area.right() {
|
|
||||||
let cell = surface.get_mut(x, y);
|
|
||||||
cell.reset();
|
|
||||||
// cell.symbol.clear();
|
|
||||||
cell.set_style(background);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
use tui::widgets::Widget;
|
use tui::widgets::Widget;
|
||||||
// don't like this but the lifetime sucks
|
// don't like this but the lifetime sucks
|
||||||
|
@ -148,14 +148,7 @@ fn render(&self, viewport: Rect, surface: &mut Surface, cx: &mut Context) {
|
|||||||
|
|
||||||
// clear area
|
// clear area
|
||||||
let background = cx.editor.theme.get("ui.popup");
|
let background = cx.editor.theme.get("ui.popup");
|
||||||
for y in area.top()..area.bottom() {
|
surface.clear_with(area, background);
|
||||||
for x in area.left()..area.right() {
|
|
||||||
let cell = surface.get_mut(x, y);
|
|
||||||
cell.reset();
|
|
||||||
// cell.symbol.clear();
|
|
||||||
cell.set_style(background);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
self.contents.render(area, surface, cx);
|
self.contents.render(area, surface, cx);
|
||||||
}
|
}
|
||||||
|
@ -126,13 +126,7 @@ pub fn render_prompt(&self, area: Rect, surface: &mut Surface, cx: &mut Context)
|
|||||||
let area = completion_area;
|
let area = completion_area;
|
||||||
let background = theme.get("ui.statusline");
|
let background = theme.get("ui.statusline");
|
||||||
|
|
||||||
for y in area.top()..area.bottom() {
|
surface.clear_with(area, background);
|
||||||
for x in area.left()..area.right() {
|
|
||||||
let cell = surface.get_mut(x, y);
|
|
||||||
cell.reset();
|
|
||||||
cell.set_style(background);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut row = 0;
|
let mut row = 0;
|
||||||
let mut col = 0;
|
let mut col = 0;
|
||||||
@ -172,13 +166,7 @@ pub fn render_prompt(&self, area: Rect, surface: &mut Surface, cx: &mut Context)
|
|||||||
);
|
);
|
||||||
|
|
||||||
let background = theme.get("ui.window");
|
let background = theme.get("ui.window");
|
||||||
for y in area.top()..area.bottom() {
|
surface.clear_with(area, background);
|
||||||
for x in area.left()..area.right() {
|
|
||||||
let cell = surface.get_mut(x, y);
|
|
||||||
cell.reset();
|
|
||||||
cell.set_style(background);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
use tui::layout::Margin;
|
use tui::layout::Margin;
|
||||||
text.render(
|
text.render(
|
||||||
|
@ -379,6 +379,26 @@ pub fn reset(&mut self) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// 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
|
/// Merge an other buffer into this one
|
||||||
pub fn merge(&mut self, other: &Buffer) {
|
pub fn merge(&mut self, other: &Buffer) {
|
||||||
let area = self.area.union(other.area);
|
let area = self.area.union(other.area);
|
||||||
|
@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -9,17 +9,14 @@
|
|||||||
//! - [`List`]
|
//! - [`List`]
|
||||||
//! - [`Table`]
|
//! - [`Table`]
|
||||||
//! - [`Paragraph`]
|
//! - [`Paragraph`]
|
||||||
//! - [`Clear`]
|
|
||||||
|
|
||||||
mod block;
|
mod block;
|
||||||
mod clear;
|
|
||||||
// mod list;
|
// mod list;
|
||||||
mod paragraph;
|
mod paragraph;
|
||||||
mod reflow;
|
mod reflow;
|
||||||
// mod table;
|
// mod table;
|
||||||
|
|
||||||
pub use self::block::{Block, BorderType};
|
pub use self::block::{Block, BorderType};
|
||||||
pub use self::clear::Clear;
|
|
||||||
// pub use self::list::{List, ListItem, ListState};
|
// pub use self::list::{List, ListItem, ListState};
|
||||||
pub use self::paragraph::{Paragraph, Wrap};
|
pub use self::paragraph::{Paragraph, Wrap};
|
||||||
// pub use self::table::{Cell, Row, Table, TableState};
|
// pub use self::table::{Cell, Row, Table, TableState};
|
||||||
|
Loading…
Reference in New Issue
Block a user