Skip to content

Commit

Permalink
Refactor Block with Default and bitflags
Browse files Browse the repository at this point in the history
Specifying empty for bitflags is not recommended, it is now removed and added
Default. For BorderType, it now defaults to plain.
  • Loading branch information
pickfire authored and archseer committed May 22, 2022
1 parent bfc4ff4 commit 1837b5e
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 19 deletions.
21 changes: 8 additions & 13 deletions helix-tui/src/widgets/block.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use crate::{
};
use helix_view::graphics::{Rect, Style};

/// Border render type. Defaults to [`BorderType::Plain`].
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum BorderType {
Plain,
Expand All @@ -25,6 +26,12 @@ impl BorderType {
}
}

impl Default for BorderType {
fn default() -> BorderType {
BorderType::Plain
}
}

/// Base widget to be used with all upper level ones. It may be used to display a box border around
/// the widget and/or add a title.
///
Expand All @@ -40,7 +47,7 @@ impl BorderType {
/// .border_type(BorderType::Rounded)
/// .style(Style::default().bg(Color::Black));
/// ```
#[derive(Debug, Clone, PartialEq)]
#[derive(Debug, Default, Clone, PartialEq)]
pub struct Block<'a> {
/// Optional title place on the upper left of the block
title: Option<Spans<'a>>,
Expand All @@ -55,18 +62,6 @@ pub struct Block<'a> {
style: Style,
}

impl<'a> Default for Block<'a> {
fn default() -> Block<'a> {
Block {
title: None,
borders: Borders::NONE,
border_style: Default::default(),
border_type: BorderType::Plain,
style: Default::default(),
}
}
}

impl<'a> Block<'a> {
pub fn title<T>(mut self, title: T) -> Block<'a>
where
Expand Down
11 changes: 5 additions & 6 deletions helix-tui/src/widgets/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,16 @@ use helix_view::graphics::Rect;

bitflags! {
/// Bitflags that can be composed to set the visible borders essentially on the block widget.
#[derive(Default)]
pub struct Borders: u32 {
/// Show no border (default)
const NONE = 0b0000_0001;
/// Show the top border
const TOP = 0b0000_0010;
const TOP = 0b0000_0001;
/// Show the right border
const RIGHT = 0b0000_0100;
const RIGHT = 0b0000_0010;
/// Show the bottom border
const BOTTOM = 0b000_1000;
const BOTTOM = 0b000_0100;
/// Show the left border
const LEFT = 0b0001_0000;
const LEFT = 0b0000_1000;
/// Show all borders
const ALL = Self::TOP.bits | Self::RIGHT.bits | Self::BOTTOM.bits | Self::LEFT.bits;
}
Expand Down

0 comments on commit 1837b5e

Please sign in to comment.