moved .hidden file logic to scan function
This commit is contained in:
parent
022ea08196
commit
613cbdaee9
1 changed files with 16 additions and 55 deletions
71
src/tab.rs
71
src/tab.rs
|
|
@ -447,6 +447,7 @@ pub fn item_from_path<P: Into<PathBuf>>(path: P, sizes: IconSizes) -> Result<Ite
|
||||||
|
|
||||||
pub fn scan_path(tab_path: &PathBuf, sizes: IconSizes) -> Vec<Item> {
|
pub fn scan_path(tab_path: &PathBuf, sizes: IconSizes) -> Vec<Item> {
|
||||||
let mut items = Vec::new();
|
let mut items = Vec::new();
|
||||||
|
let mut hidden_file = Vec::new();
|
||||||
match fs::read_dir(tab_path) {
|
match fs::read_dir(tab_path) {
|
||||||
Ok(entries) => {
|
Ok(entries) => {
|
||||||
for entry_res in entries {
|
for entry_res in entries {
|
||||||
|
|
@ -472,6 +473,10 @@ pub fn scan_path(tab_path: &PathBuf, sizes: IconSizes) -> Vec<Item> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if name == ".hidden" {
|
||||||
|
hidden_file = parse_hidden_file(&path);
|
||||||
|
}
|
||||||
|
|
||||||
let metadata = match fs::metadata(&path) {
|
let metadata = match fs::metadata(&path) {
|
||||||
Ok(ok) => ok,
|
Ok(ok) => ok,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
|
|
@ -492,6 +497,17 @@ pub fn scan_path(tab_path: &PathBuf, sizes: IconSizes) -> Vec<Item> {
|
||||||
(false, true) => Ordering::Greater,
|
(false, true) => Ordering::Greater,
|
||||||
_ => LANGUAGE_SORTER.compare(&a.display_name, &b.display_name),
|
_ => LANGUAGE_SORTER.compare(&a.display_name, &b.display_name),
|
||||||
});
|
});
|
||||||
|
items.iter_mut().for_each(|mut item| {
|
||||||
|
if item.path_opt().is_some() {
|
||||||
|
if hidden_file
|
||||||
|
.iter()
|
||||||
|
.find(|hidden| hidden.eq(&item.path_opt().unwrap()))
|
||||||
|
.is_some()
|
||||||
|
{
|
||||||
|
item.hidden = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
items
|
items
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3208,20 +3224,6 @@ impl Tab {
|
||||||
let mut children = Vec::new();
|
let mut children = Vec::new();
|
||||||
|
|
||||||
if let Some(items) = self.column_sort() {
|
if let Some(items) = self.column_sort() {
|
||||||
let cloned_items = items.clone();
|
|
||||||
let hidden_file = items
|
|
||||||
.iter()
|
|
||||||
.find(|(size, item)| item.name == ".hidden")
|
|
||||||
.map(|(size, item)| item);
|
|
||||||
|
|
||||||
let hidden_files = match hidden_file {
|
|
||||||
Some(hidden_file) => match hidden_file.path_opt() {
|
|
||||||
Some(path) => parse_hidden_file(path),
|
|
||||||
None => Vec::new(),
|
|
||||||
},
|
|
||||||
None => Vec::new(),
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut count = 0;
|
let mut count = 0;
|
||||||
let mut col = 0;
|
let mut col = 0;
|
||||||
let mut row = 0;
|
let mut row = 0;
|
||||||
|
|
@ -3229,18 +3231,6 @@ impl Tab {
|
||||||
let mut hidden = 0;
|
let mut hidden = 0;
|
||||||
let mut grid_elements = Vec::new();
|
let mut grid_elements = Vec::new();
|
||||||
for &(i, item) in items.iter() {
|
for &(i, item) in items.iter() {
|
||||||
let is_from_hidden = item.path_opt().and_then(|path| {
|
|
||||||
hidden_files
|
|
||||||
.iter()
|
|
||||||
.find(|hidden_item| hidden_item.eq(&path))
|
|
||||||
});
|
|
||||||
|
|
||||||
if !show_hidden && is_from_hidden.is_some() {
|
|
||||||
item.pos_opt.set(None);
|
|
||||||
item.rect_opt.set(None);
|
|
||||||
hidden += 1;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if !show_hidden && item.hidden {
|
if !show_hidden && item.hidden {
|
||||||
item.pos_opt.set(None);
|
item.pos_opt.set(None);
|
||||||
item.rect_opt.set(None);
|
item.rect_opt.set(None);
|
||||||
|
|
@ -3491,40 +3481,11 @@ impl Tab {
|
||||||
let mut y = 0;
|
let mut y = 0;
|
||||||
|
|
||||||
let items = self.column_sort();
|
let items = self.column_sort();
|
||||||
let cloned_items = items.clone();
|
|
||||||
let hidden_files = if let Some(items) = cloned_items {
|
|
||||||
let hidden_file = items
|
|
||||||
.iter()
|
|
||||||
.find(|(size, item)| item.name == ".hidden")
|
|
||||||
.map(|(size, item)| item);
|
|
||||||
match hidden_file {
|
|
||||||
Some(hidden_file) => match hidden_file.path_opt() {
|
|
||||||
Some(path) => parse_hidden_file(path),
|
|
||||||
None => Vec::new(),
|
|
||||||
},
|
|
||||||
None => Vec::new(),
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Vec::new()
|
|
||||||
};
|
|
||||||
let mut drag_items = Vec::new();
|
let mut drag_items = Vec::new();
|
||||||
if let Some(items) = items {
|
if let Some(items) = items {
|
||||||
let mut count = 0;
|
let mut count = 0;
|
||||||
let mut hidden = 0;
|
let mut hidden = 0;
|
||||||
for (i, item) in items {
|
for (i, item) in items {
|
||||||
let is_from_hidden = item.path_opt().and_then(|path| {
|
|
||||||
hidden_files
|
|
||||||
.iter()
|
|
||||||
.find(|hidden_item| hidden_item.eq(&path))
|
|
||||||
});
|
|
||||||
|
|
||||||
if !show_hidden && is_from_hidden.is_some() {
|
|
||||||
item.pos_opt.set(None);
|
|
||||||
item.rect_opt.set(None);
|
|
||||||
hidden += 1;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if item.hidden && !show_hidden {
|
if item.hidden && !show_hidden {
|
||||||
item.pos_opt.set(None);
|
item.pos_opt.set(None);
|
||||||
item.rect_opt.set(None);
|
item.rect_opt.set(None);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue