summaryrefslogtreecommitdiffstats
path: root/src/lib.rs
diff options
context:
space:
mode:
authorClement Tsang <34804052+ClementTsang@users.noreply.github.com>2020-11-18 01:28:53 -0500
committerGitHub <noreply@github.com>2020-11-18 01:28:53 -0500
commit669b245367d194b7f4f7a12fe29573fcd9ca4e4e (patch)
tree5d4822751b16bf4a6b46a2995348ca90b6866152 /src/lib.rs
parente43456207be0757fbb9c05f93a169063faf673b7 (diff)
feature: Add collapsible tree entries (#304)
Adds collapsible trees to the tree mode for processes. These can be toggled via the + or - keys and the mouse by clicking on a selected entry.
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 443328de..c7a2a807 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -361,14 +361,17 @@ fn update_final_process_list(app: &mut App, widget_id: u64) {
if let Some((is_invalid_or_blank, is_using_command, is_grouped, is_tree)) = process_states {
if !app.is_frozen {
- app.canvas_data.single_process_data = convert_process_data(&app.data_collection);
+ convert_process_data(
+ &app.data_collection,
+ &mut app.canvas_data.single_process_data,
+ );
}
let process_filter = app.get_process_filter(widget_id);
let filtered_process_data: Vec<ConvertedProcessData> = if is_tree {
app.canvas_data
.single_process_data
.iter()
- .map(|process| {
+ .map(|(_pid, process)| {
let mut process_clone = process.clone();
if !is_invalid_or_blank {
if let Some(process_filter) = process_filter {
@@ -383,15 +386,19 @@ fn update_final_process_list(app: &mut App, widget_id: u64) {
app.canvas_data
.single_process_data
.iter()
- .filter(|process| {
+ .filter_map(|(_pid, process)| {
if !is_invalid_or_blank {
if let Some(process_filter) = process_filter {
- process_filter.check(&process, is_using_command)
+ if process_filter.check(&process, is_using_command) {
+ Some(process)
+ } else {
+ None
+ }
} else {
- true
+ Some(process)
}
} else {
- true
+ Some(process)
}
})
.cloned()