Made search drawing on canvas a bit more efficient if possible, fixed app positionings due to search repositioning
This commit is contained in:
parent
f9bd7a6f21
commit
0a13d75415
20
src/app.rs
20
src/app.rs
|
@ -601,10 +601,10 @@ impl App {
|
||||||
// CPU -(down)> MEM
|
// CPU -(down)> MEM
|
||||||
// MEM -(down)> Network, -(right)> TEMP
|
// MEM -(down)> Network, -(right)> TEMP
|
||||||
// TEMP -(down)> Disk, -(left)> MEM, -(up)> CPU
|
// TEMP -(down)> Disk, -(left)> MEM, -(up)> CPU
|
||||||
// Disk -(down)> Processes OR PROC_SEARCH, -(left)> MEM, -(up)> TEMP
|
// Disk -(down)> Processes, -(left)> MEM, -(up)> TEMP
|
||||||
// Network -(up)> MEM, -(right)> PROC
|
// Network -(up)> MEM, -(right)> PROC
|
||||||
// PROC -(up)> Disk OR PROC_SEARCH if enabled, -(left)> Network
|
// PROC -(up)> Disk, -(down)> PROC_SEARCH, -(left)> Network
|
||||||
// PROC_SEARCH -(up)> Disk, -(down)> PROC, -(left)> Network
|
// PROC_SEARCH -(up)> PROC, -(left)> Network
|
||||||
pub fn move_left(&mut self) {
|
pub fn move_left(&mut self) {
|
||||||
if !self.is_in_dialog() {
|
if !self.is_in_dialog() {
|
||||||
self.current_widget_selected = match self.current_widget_selected {
|
self.current_widget_selected = match self.current_widget_selected {
|
||||||
|
@ -634,14 +634,8 @@ impl App {
|
||||||
self.current_widget_selected = match self.current_widget_selected {
|
self.current_widget_selected = match self.current_widget_selected {
|
||||||
WidgetPosition::Mem => WidgetPosition::Cpu,
|
WidgetPosition::Mem => WidgetPosition::Cpu,
|
||||||
WidgetPosition::Network => WidgetPosition::Mem,
|
WidgetPosition::Network => WidgetPosition::Mem,
|
||||||
WidgetPosition::Process => {
|
WidgetPosition::Process => WidgetPosition::Disk,
|
||||||
if self.is_searching() {
|
WidgetPosition::ProcessSearch => WidgetPosition::Process,
|
||||||
WidgetPosition::ProcessSearch
|
|
||||||
} else {
|
|
||||||
WidgetPosition::Disk
|
|
||||||
}
|
|
||||||
}
|
|
||||||
WidgetPosition::ProcessSearch => WidgetPosition::Disk,
|
|
||||||
WidgetPosition::Temp => WidgetPosition::Cpu,
|
WidgetPosition::Temp => WidgetPosition::Cpu,
|
||||||
WidgetPosition::Disk => WidgetPosition::Temp,
|
WidgetPosition::Disk => WidgetPosition::Temp,
|
||||||
_ => self.current_widget_selected,
|
_ => self.current_widget_selected,
|
||||||
|
@ -656,14 +650,14 @@ impl App {
|
||||||
WidgetPosition::Cpu => WidgetPosition::Mem,
|
WidgetPosition::Cpu => WidgetPosition::Mem,
|
||||||
WidgetPosition::Mem => WidgetPosition::Network,
|
WidgetPosition::Mem => WidgetPosition::Network,
|
||||||
WidgetPosition::Temp => WidgetPosition::Disk,
|
WidgetPosition::Temp => WidgetPosition::Disk,
|
||||||
WidgetPosition::Disk => {
|
WidgetPosition::Disk => WidgetPosition::Process,
|
||||||
|
WidgetPosition::Process => {
|
||||||
if self.is_searching() {
|
if self.is_searching() {
|
||||||
WidgetPosition::ProcessSearch
|
WidgetPosition::ProcessSearch
|
||||||
} else {
|
} else {
|
||||||
WidgetPosition::Process
|
WidgetPosition::Process
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
WidgetPosition::ProcessSearch => WidgetPosition::Process,
|
|
||||||
_ => self.current_widget_selected,
|
_ => self.current_widget_selected,
|
||||||
};
|
};
|
||||||
self.reset_multi_tap_keys();
|
self.reset_multi_tap_keys();
|
||||||
|
|
|
@ -897,11 +897,25 @@ fn draw_search_field<B: backend::Backend>(
|
||||||
&query[(query.len() - width as usize)..]
|
&query[(query.len() - width as usize)..]
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO: [SEARCH] Consider making this look prettier
|
|
||||||
let cursor_position = app_state.get_cursor_position();
|
let cursor_position = app_state.get_cursor_position();
|
||||||
|
|
||||||
// TODO: [SEARCH] This can be optimized... if the cursor is at the very end or not focused we can skip this
|
let query_with_cursor: Vec<Text> = if let app::WidgetPosition::ProcessSearch =
|
||||||
let mut query_with_cursor: Vec<Text> = shrunk_query
|
app_state.current_widget_selected
|
||||||
|
{
|
||||||
|
if cursor_position >= query.len() {
|
||||||
|
let mut q = vec![Text::styled(
|
||||||
|
shrunk_query.to_string(),
|
||||||
|
Style::default().fg(TEXT_COLOUR),
|
||||||
|
)];
|
||||||
|
|
||||||
|
q.push(Text::styled(
|
||||||
|
" ".to_string(),
|
||||||
|
Style::default().fg(TEXT_COLOUR).bg(TABLE_HEADER_COLOUR),
|
||||||
|
));
|
||||||
|
|
||||||
|
q
|
||||||
|
} else {
|
||||||
|
shrunk_query
|
||||||
.chars()
|
.chars()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.map(|(itx, c)| {
|
.map(|(itx, c)| {
|
||||||
|
@ -915,15 +929,14 @@ fn draw_search_field<B: backend::Backend>(
|
||||||
}
|
}
|
||||||
Text::styled(c.to_string(), Style::default().fg(TEXT_COLOUR))
|
Text::styled(c.to_string(), Style::default().fg(TEXT_COLOUR))
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>()
|
||||||
if let app::WidgetPosition::ProcessSearch = app_state.current_widget_selected {
|
|
||||||
if cursor_position >= query.len() {
|
|
||||||
query_with_cursor.push(Text::styled(
|
|
||||||
" ".to_string(),
|
|
||||||
Style::default().fg(TEXT_COLOUR).bg(TABLE_HEADER_COLOUR),
|
|
||||||
))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
vec![Text::styled(
|
||||||
|
shrunk_query.to_string(),
|
||||||
|
Style::default().fg(TEXT_COLOUR),
|
||||||
|
)]
|
||||||
|
};
|
||||||
|
|
||||||
let mut search_text = vec![if app_state.search_state.is_searching_with_pid() {
|
let mut search_text = vec![if app_state.search_state.is_searching_with_pid() {
|
||||||
Text::styled(
|
Text::styled(
|
||||||
|
|
Loading…
Reference in New Issue