Skip to content

Commit a6315d3

Browse files
committed
top: tui impl < > (select sort column)
1 parent d1ea046 commit a6315d3

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

src/uu/top/src/tui/input.rs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
use crate::header::Header;
77
use crate::platform::get_numa_nodes;
88
use crate::tui::stat::{CpuValueMode, TuiStat};
9-
use crate::{ProcList, Settings};
9+
use crate::{selected_fields, ProcList, Settings};
1010
use ratatui::crossterm::event::{Event, KeyCode, KeyEvent, KeyModifiers};
1111
use std::sync::atomic::{AtomicBool, Ordering};
1212
use std::sync::RwLock;
@@ -123,6 +123,36 @@ pub fn handle_input(
123123
stat.cpu_column = stat.cpu_column % 8 + 1;
124124
should_update.store(true, Ordering::Relaxed);
125125
}
126+
char!('<') => {
127+
{
128+
let mut stat = tui_stat.write().unwrap();
129+
let fields = selected_fields();
130+
if let Some(pos) = fields.iter().position(|f| f == &stat.sorter) {
131+
let new_pos = if pos == 0 { fields.len() - 1 } else { pos - 1 };
132+
stat.sorter = fields[new_pos].clone();
133+
} else {
134+
stat.sorter = fields[0].clone();
135+
}
136+
}
137+
138+
data.write().unwrap().1 = ProcList::new(settings, &tui_stat.read().unwrap());
139+
should_update.store(true, Ordering::Relaxed);
140+
}
141+
char!('>') => {
142+
{
143+
let mut stat = tui_stat.write().unwrap();
144+
let fields = selected_fields();
145+
if let Some(pos) = fields.iter().position(|f| f == &stat.sorter) {
146+
let new_pos = if pos + 1 >= fields.len() { 0 } else { pos + 1 };
147+
stat.sorter = fields[new_pos].clone();
148+
} else {
149+
stat.sorter = fields[0].clone();
150+
}
151+
}
152+
153+
data.write().unwrap().1 = ProcList::new(settings, &tui_stat.read().unwrap());
154+
should_update.store(true, Ordering::Relaxed);
155+
}
126156
Event::Key(KeyEvent {
127157
code: KeyCode::Up, ..
128158
}) => {

0 commit comments

Comments
 (0)