diff options
author | qkzk <qu3nt1n@gmail.com> | 2023-12-04 22:03:22 +0100 |
---|---|---|
committer | qkzk <qu3nt1n@gmail.com> | 2023-12-04 22:03:22 +0100 |
commit | 53439a734d7267fdcad797d53b208590ae113139 (patch) | |
tree | d297893622fce72f9d0a7beab79cc9b915e01e00 | |
parent | 7c7bdcf711f4fdb6a3a02470d0df6e899ca1690b (diff) |
simplify coloreffect
-rw-r--r-- | src/modes/display/fileinfo.rs | 24 | ||||
-rw-r--r-- | src/modes/display/tree.rs | 2 |
2 files changed, 16 insertions, 10 deletions
diff --git a/src/modes/display/fileinfo.rs b/src/modes/display/fileinfo.rs index 0d9d3a4..cfb65d7 100644 --- a/src/modes/display/fileinfo.rs +++ b/src/modes/display/fileinfo.rs @@ -12,8 +12,8 @@ use crate::common::PERMISSIONS_STR; use crate::config::extension_color; use crate::config::COLORS; use crate::modes::Users; +use crate::modes::MAX_MODE; use crate::modes::{human_size, read_symlink_dest}; -use crate::modes::{Node, MAX_MODE}; type Valid = bool; @@ -313,8 +313,9 @@ pub struct ColorEffect { impl ColorEffect { /// Calculates a color and an effect from `fm::file_info::FileInfo`. + /// Used in `Display::Directory` mode where selection is stored in fileinfo itself. #[inline] - pub fn new(fileinfo: &FileInfo) -> ColorEffect { + pub fn directory(fileinfo: &FileInfo) -> ColorEffect { let color = fileinfo_color(fileinfo); let effect = if fileinfo.is_selected { @@ -326,13 +327,18 @@ impl ColorEffect { Self { color, effect } } + /// Calculates a color and an effect from `crate::app::file_info` and a flag. + /// The "selected file" is stored in the node itself, we only need that boolean attribute. #[inline] - pub fn node(fileinfo: &FileInfo, current_node: &Node) -> Self { - let mut color_effect = Self::new(fileinfo); - if current_node.selected() { - color_effect.effect |= Effect::REVERSE; - } - color_effect + pub fn node(fileinfo: &FileInfo, is_selected: bool) -> Self { + let color = fileinfo_color(fileinfo); + let effect = if is_selected { + Effect::REVERSE + } else { + Effect::empty() + }; + + Self { color, effect } } /// Makes a new `tuikit::attr::Attr` where `bg` is default. @@ -349,7 +355,7 @@ impl ColorEffect { /// effect. /// Selected file is reversed. pub fn fileinfo_attr(fileinfo: &FileInfo) -> Attr { - ColorEffect::new(fileinfo).attr() + ColorEffect::directory(fileinfo).attr() } /// True if the file isn't hidden. diff --git a/src/modes/display/tree.rs b/src/modes/display/tree.rs index c67711f..0435359 100644 --- a/src/modes/display/tree.rs +++ b/src/modes/display/tree.rs @@ -608,7 +608,7 @@ impl Tree { &fileinfo, &prefix, filename_format(path, node), - ColorEffect::node(&fileinfo, node), + ColorEffect::node(&fileinfo, node.selected()), path, )); |