diff --git a/TODO.md b/TODO.md index f307cef7..3f0dff70 100644 --- a/TODO.md +++ b/TODO.md @@ -18,6 +18,8 @@ ## After making public +* Mouse + key events conflict? Make it so that some events don't clog up the loop if they are not valid keys! + * Header should be clear on current sorting direction! * Scaling in and out (zoom), may need to show zoom levels 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<B : tui::backend::Backend>(terminal : &mut Terminal<B>, 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 - } - 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 - } + let start_position = match app_state.scroll_direction { + app::ScrollDirection::DOWN => { + if app_state.currently_selected_process_position < num_rows { + 0 } - app::ScrollDirection::DOWN => { + 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.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 { + 0 + }; + app_state.previous_process_position + } + 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<Vec<String>> = (&canvas_data.process_data[start_position as usize..]).to_vec();