working needs a small fix

This commit is contained in:
filipriec
2025-04-07 13:24:22 +02:00
parent e29b576102
commit 37f12ea6f0
7 changed files with 69 additions and 18 deletions

View File

@@ -2,6 +2,7 @@
use crate::config::binds::key_sequences::KeySequenceTracker;
use crate::state::canvas_state::CanvasState;
use crate::state::state::AppState;
use std::error::Error;
#[derive(PartialEq)]
@@ -13,6 +14,7 @@ enum CharType {
pub async fn execute_action<S: CanvasState>(
action: &str,
app_state: &mut AppState,
state: &mut S,
ideal_cursor_column: &mut usize,
key_sequence_tracker: &mut KeySequenceTracker,
@@ -53,17 +55,28 @@ pub async fn execute_action<S: CanvasState>(
return Ok("No fields to navigate.".to_string());
}
let current_field = state.current_field();
let new_field = (state.current_field() + 1).min(num_fields - 1);
state.set_current_field(new_field);
let current_input = state.get_current_input();
let max_cursor_pos = if current_input.is_empty() {
0
let last_field_index = num_fields - 1;
if current_field == last_field_index {
// Already on the last field, move focus outside
app_state.ui.focus_outside_canvas = true;
app_state.general.selected_item = 0; // Focus first general item (e.g., Login button)
key_sequence_tracker.reset();
Ok("Focus moved below canvas".to_string())
} else {
current_input.len().saturating_sub(1)
};
let new_pos = (*ideal_cursor_column).min(max_cursor_pos);
state.set_current_cursor_pos(new_pos);
Ok("move down from functions/modes/read_only/auth_ro.rs".to_string())
// Move to the next field within the canvas
let new_field = (current_field + 1).min(last_field_index);
state.set_current_field(new_field);
let current_input = state.get_current_input();
let max_cursor_pos = if current_input.is_empty() {
0
} else {
current_input.len().saturating_sub(1)
};
let new_pos = (*ideal_cursor_column).min(max_cursor_pos);
state.set_current_cursor_pos(new_pos);
Ok("".to_string()) // Clear previous debug message
}
}
"move_first_line" => {
key_sequence_tracker.reset();