diff --git a/src/app.rs b/src/app.rs index 675176bf..8c262489 100644 --- a/src/app.rs +++ b/src/app.rs @@ -301,7 +301,7 @@ impl App { self.delete_dialog_state.is_on_yes = false; self.to_delete_process_list = None; self.dd_err = None; - } else if !self.is_expanded { + } else if self.is_filtering_or_searching() { match self.current_widget_selected { WidgetPosition::Process | WidgetPosition::ProcessSearch => { if self.process_search_state.search_state.is_enabled { @@ -320,11 +320,18 @@ impl App { } _ => {} } - } else { + } else if self.is_expanded { self.is_expanded = false; } } + fn is_filtering_or_searching(&self) -> bool { + self.cpu_state.is_showing_tray + || self.mem_state.is_showing_tray + || self.net_state.is_showing_tray + || self.process_search_state.search_state.is_enabled + } + fn reset_multi_tap_keys(&mut self) { self.awaiting_second_char = false; self.second_char = None; diff --git a/src/canvas.rs b/src/canvas.rs index 5fb4812d..65108285 100644 --- a/src/canvas.rs +++ b/src/canvas.rs @@ -563,7 +563,7 @@ impl Painter { ); } - let title = if app_state.is_expanded { + let title = if app_state.is_expanded && !app_state.cpu_state.is_showing_tray { const TITLE_BASE: &str = " CPU ── Esc to go back "; let repeat_num = max( 0, @@ -644,7 +644,7 @@ impl Painter { let cpu_rows = stringified_cpu_data .iter() .enumerate() - .filter(|(itx, _cpu_string_row)| { + .filter(|(itx, _)| { if app_state.cpu_state.is_showing_tray { true } else { @@ -695,6 +695,19 @@ impl Painter { ); let intrinsic_widths = &(variable_intrinsic_results.0)[0..variable_intrinsic_results.1]; + let title = if app_state.cpu_state.is_showing_tray { + const TITLE_BASE: &str = " Esc to go close "; + let repeat_num = max( + 0, + draw_loc.width as i32 - TITLE_BASE.chars().count() as i32 - 2, + ); + let result_title = format!("{} Esc to go close ", "─".repeat(repeat_num as usize)); + + result_title + } else { + "".to_string() + }; + // Draw Table::new( if app_state.cpu_state.is_showing_tray { @@ -705,12 +718,23 @@ impl Painter { .iter(), cpu_rows, ) - .block(Block::default().borders(Borders::ALL).border_style( - match app_state.current_widget_selected { - app::WidgetPosition::Cpu => self.colours.highlighted_border_style, - _ => self.colours.border_style, - }, - )) + .block( + Block::default() + .title(&title) + .title_style(if app_state.is_expanded { + self.colours.highlighted_border_style + } else { + match app_state.current_widget_selected { + app::WidgetPosition::Cpu => self.colours.highlighted_border_style, + _ => self.colours.border_style, + } + }) + .borders(Borders::ALL) + .border_style(match app_state.current_widget_selected { + app::WidgetPosition::Cpu => self.colours.highlighted_border_style, + _ => self.colours.border_style, + }), + ) .header_style(self.colours.table_header_style) .widths( &(intrinsic_widths