From a5306c6692705aa93326224cd50e47f3a1b94ca6 Mon Sep 17 00:00:00 2001 From: ClementTsang Date: Mon, 16 Sep 2019 18:47:49 -0400 Subject: Added scrolling in processes. --- src/canvas.rs | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) (limited to 'src/canvas.rs') diff --git a/src/canvas.rs b/src/canvas.rs index 2233c37f..91544e96 100644 --- a/src/canvas.rs +++ b/src/canvas.rs @@ -197,34 +197,38 @@ pub fn draw_data(terminal : &mut Terminal, app_sta let mut process_counter = 0; //TODO: Fix this! - let start_position = if num_rows <= app_state.currently_selected_process_position { - match app_state.scroll_direction { - app::ScrollDirection::UP => { - if app_state.previous_process_position - app_state.currently_selected_process_position <= num_rows { - // We don't need to scroll up yet... - debug!("No need to scroll up yet..."); - app_state.previous_process_position + let start_position = match app_state.scroll_direction { + app::ScrollDirection::DOWN => { + if app_state.currently_selected_process_position < num_rows { + 0 + } + else if app_state.currently_selected_process_position - num_rows < app_state.previous_process_position { + app_state.previous_process_position + } + else { + app_state.previous_process_position = app_state.currently_selected_process_position - num_rows + 1; + app_state.previous_process_position + } + } + app::ScrollDirection::UP => { + if app_state.currently_selected_process_position == app_state.previous_process_position - 1 { + app_state.previous_process_position = if app_state.previous_process_position > 0 { + app_state.previous_process_position - 1 } else { - // We need to scroll up! - debug!("Scroll up! Scroll up!"); - app_state.previous_process_position = app_state.currently_selected_process_position; - app_state.currently_selected_process_position - } + 0 + }; + app_state.previous_process_position } - app::ScrollDirection::DOWN => { - app_state.previous_process_position = app_state.currently_selected_process_position - num_rows + 1; - (app_state.currently_selected_process_position - num_rows + 1) + else { + app_state.previous_process_position } } - } - else { - 0 }; debug!( - "START POSN: {}, CURRENT SELECTED POSN: {}, NUM ROWS: {}", - start_position, app_state.currently_selected_process_position, num_rows + "START POSN: {}, PREV POSN: {}, CURRENT SELECTED POSN: {}, NUM ROWS: {}", + start_position, app_state.previous_process_position, app_state.currently_selected_process_position, num_rows ); let sliced_vec : Vec> = (&canvas_data.process_data[start_position as usize..]).to_vec(); -- cgit v1.2.3