Unnamed repository; edit this file 'description' to name the repository.
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.
Ivan Tham 2022-05-22
parent bfc4ff4 · commit 1837b5e
-rw-r--r--helix-tui/src/widgets/block.rs21
-rw-r--r--helix-tui/src/widgets/mod.rs11
2 files changed, 13 insertions, 19 deletions
diff --git a/helix-tui/src/widgets/block.rs b/helix-tui/src/widgets/block.rs
index 26223c3e..3c05a2a3 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<Spans<'a>>,
@@ -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
diff --git a/helix-tui/src/widgets/mod.rs b/helix-tui/src/widgets/mod.rs
index e5608a79..c0c3a994 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;
}