From 1837b5e4a61f0230b3cd382ed487fa09be7b2b68 Mon Sep 17 00:00:00 2001 From: Ivan Tham Date: Sat, 14 May 2022 22:28:37 +0800 Subject: [PATCH] Refactor Block with Default and bitflags Specifying empty for bitflags is not recommended, it is now removed and added Default. For BorderType, it now defaults to plain. --- helix-tui/src/widgets/block.rs | 21 ++++++++------------- helix-tui/src/widgets/mod.rs | 11 +++++------ 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/helix-tui/src/widgets/block.rs b/helix-tui/src/widgets/block.rs index 26223c3eb..3c05a2a3c 100644 --- a/helix-tui/src/widgets/block.rs +++ b/helix-tui/src/widgets/block.rs @@ -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, @@ -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. /// @@ -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>, @@ -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(mut self, title: T) -> Block<'a> where diff --git a/helix-tui/src/widgets/mod.rs b/helix-tui/src/widgets/mod.rs index e5608a79e..c0c3a994a 100644 --- a/helix-tui/src/widgets/mod.rs +++ b/helix-tui/src/widgets/mod.rs @@ -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; }