diff --git a/CHANGELOG.md b/CHANGELOG.md index 5762280bb..9b3357bd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#215](https://github.com/ClementTsang/bottom/pull/215): Add labels to Linux temperature values. +- [#224](https://github.com/ClementTsang/bottom/pull/224): Implements sorting by count. It previously did absolutely nothing. + ## [0.4.7] - 2020-08-26 ### Bug Fixes diff --git a/src/app.rs b/src/app.rs index 8db5f7778..1aa390f7d 100644 --- a/src/app.rs +++ b/src/app.rs @@ -268,6 +268,19 @@ impl App { // Toggles process widget grouping state proc_widget_state.is_grouped = !(proc_widget_state.is_grouped); + // Forcefully switch off column if we were on it... + if (proc_widget_state.is_grouped + && proc_widget_state.process_sorting_type + == data_harvester::processes::ProcessSorting::Pid) + || (!proc_widget_state.is_grouped + && proc_widget_state.process_sorting_type + == data_harvester::processes::ProcessSorting::Count) + { + proc_widget_state.process_sorting_type = + data_harvester::processes::ProcessSorting::CpuPercent; // Go back to default, negate PID for group + proc_widget_state.process_sorting_reverse = true; + } + proc_widget_state .columns .column_mapping diff --git a/src/lib.rs b/src/lib.rs index 1b1c3e7bf..2c15c73dc 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -510,16 +510,6 @@ pub fn update_final_process_list(app: &mut App, widget_id: u64) { // Quick fix for tab updating the table headers if let Some(proc_widget_state) = app.proc_state.get_mut_widget_state(widget_id) { - if let data_harvester::processes::ProcessSorting::Pid = - proc_widget_state.process_sorting_type - { - if proc_widget_state.is_grouped { - proc_widget_state.process_sorting_type = - data_harvester::processes::ProcessSorting::CpuPercent; // Go back to default, negate PID for group - proc_widget_state.process_sorting_reverse = true; - } - } - let mut resulting_processes = filtered_process_data; sort_process_data(&mut resulting_processes, proc_widget_state); @@ -645,7 +635,15 @@ pub fn sort_process_data( ) }), ProcessSorting::Count => { - // Nothing should happen here. + if proc_widget_state.is_grouped { + to_sort_vec.sort_by(|a, b| { + utils::gen_util::get_ordering( + a.group_pids.len(), + b.group_pids.len(), + proc_widget_state.process_sorting_reverse, + ) + }); + } } } }