summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorClementTsang <cjhtsang@uwaterloo.ca>2020-02-02 23:36:44 -0500
committerClementTsang <cjhtsang@uwaterloo.ca>2020-02-02 23:50:18 -0500
commit0a13d75415e45f2c71b87c4771c5f59790a98d19 (patch)
treed55f2ba06b2c98f548dd1cec565b182ff1f9a65a /src
parentf9bd7a6f2136f227557a6a50da7c50e19b31e9b8 (diff)
Made search drawing on canvas a bit more efficient if possible, fixed app positionings due to search repositioning
Diffstat (limited to 'src')
-rw-r--r--src/app.rs20
-rw-r--r--src/canvas.rs55
2 files changed, 41 insertions, 34 deletions
diff --git a/src/app.rs b/src/app.rs
index f33125f2..5a584cec 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -601,10 +601,10 @@ impl App {
// CPU -(down)> MEM
// MEM -(down)> Network, -(right)> TEMP
// 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
- // PROC -(up)> Disk OR PROC_SEARCH if enabled, -(left)> Network
- // PROC_SEARCH -(up)> Disk, -(down)> PROC, -(left)> Network
+ // PROC -(up)> Disk, -(down)> PROC_SEARCH, -(left)> Network
+ // PROC_SEARCH -(up)> PROC, -(left)> Network
pub fn move_left(&mut self) {
if !self.is_in_dialog() {
self.current_widget_selected = match self.current_widget_selected {
@@ -634,14 +634,8 @@ impl App {
self.current_widget_selected = match self.current_widget_selected {
WidgetPosition::Mem => WidgetPosition::Cpu,
WidgetPosition::Network => WidgetPosition::Mem,
- WidgetPosition::Process => {
- if self.is_searching() {
- WidgetPosition::ProcessSearch
- } else {
- WidgetPosition::Disk
- }
- }
- WidgetPosition::ProcessSearch => WidgetPosition::Disk,
+ WidgetPosition::Process => WidgetPosition::Disk,
+ WidgetPosition::ProcessSearch => WidgetPosition::Process,
WidgetPosition::Temp => WidgetPosition::Cpu,
WidgetPosition::Disk => WidgetPosition::Temp,
_ => self.current_widget_selected,
@@ -656,14 +650,14 @@ impl App {
WidgetPosition::Cpu => WidgetPosition::Mem,
WidgetPosition::Mem => WidgetPosition::Network,
WidgetPosition::Temp => WidgetPosition::Disk,
- WidgetPosition::Disk => {
+ WidgetPosition::Disk => WidgetPosition::Process,
+ WidgetPosition::Process => {
if self.is_searching() {
WidgetPosition::ProcessSearch
} else {
WidgetPosition::Process
}
}
- WidgetPosition::ProcessSearch => WidgetPosition::Process,
_ => self.current_widget_selected,
};
self.reset_multi_tap_keys();
diff --git a/src/canvas.rs b/src/canvas.rs
index b41ca8a6..6bbbb849 100644
--- a/src/canvas.rs
+++ b/src/canvas.rs
@@ -897,33 +897,46 @@ fn draw_search_field<B: backend::Backend>(
&query[(query.len() - width as usize)..]
};
- // TODO: [SEARCH] Consider making this look prettier
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 mut query_with_cursor: Vec<Text> = shrunk_query
- .chars()
- .enumerate()
- .map(|(itx, c)| {
- if let app::WidgetPosition::ProcessSearch = app_state.current_widget_selected {
- if itx == cursor_position {
- return Text::styled(
- c.to_string(),
- Style::default().fg(TEXT_COLOUR).bg(TABLE_HEADER_COLOUR),
- );
- }
- }
- Text::styled(c.to_string(), Style::default().fg(TEXT_COLOUR))
- })
- .collect::<Vec<_>>();
- if let app::WidgetPosition::ProcessSearch = app_state.current_widget_selected {
+ let query_with_cursor: Vec<Text> = if let app::WidgetPosition::ProcessSearch =
+ app_state.current_widget_selected
+ {
if cursor_position >= query.len() {
- query_with_cursor.push(Text::styled(
+ 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()
+ .enumerate()
+ .map(|(itx, c)| {
+ if let app::WidgetPosition::ProcessSearch = app_state.current_widget_selected {
+ if itx == cursor_position {
+ return Text::styled(
+ c.to_string(),
+ Style::default().fg(TEXT_COLOUR).bg(TABLE_HEADER_COLOUR),
+ );
+ }
+ }
+ Text::styled(c.to_string(), Style::default().fg(TEXT_COLOUR))
+ })
+ .collect::<Vec<_>>()
}
- }
+ } 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() {
Text::styled(