summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorqkzk <qu3nt1n@gmail.com>2023-12-04 22:03:22 +0100
committerqkzk <qu3nt1n@gmail.com>2023-12-04 22:03:22 +0100
commit53439a734d7267fdcad797d53b208590ae113139 (patch)
treed297893622fce72f9d0a7beab79cc9b915e01e00
parent7c7bdcf711f4fdb6a3a02470d0df6e899ca1690b (diff)
simplify coloreffect
-rw-r--r--src/modes/display/fileinfo.rs24
-rw-r--r--src/modes/display/tree.rs2
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,
));