diff options
author | Clement Tsang <34804052+ClementTsang@users.noreply.github.com> | 2020-11-18 01:28:53 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-18 01:28:53 -0500 |
commit | 669b245367d194b7f4f7a12fe29573fcd9ca4e4e (patch) | |
tree | 5d4822751b16bf4a6b46a2995348ca90b6866152 /src/lib.rs | |
parent | e43456207be0757fbb9c05f93a169063faf673b7 (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.rs | 19 |
1 files changed, 13 insertions, 6 deletions
@@ -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() |