compiled, still not working for canvas

This commit is contained in:
filipriec
2025-04-17 14:41:09 +02:00
parent 4d7177f15a
commit e921862a7f
3 changed files with 136 additions and 50 deletions

View File

@@ -12,7 +12,7 @@ use ratatui::widgets::TableState;
pub fn handle_add_table_navigation(
key: KeyEvent,
config: &Config,
_app_state: &AppState,
app_state: &mut AppState,
add_table_state: &mut AddTableState,
command_message: &mut String,
) -> bool {
@@ -25,9 +25,11 @@ pub fn handle_add_table_navigation(
let is_left_pane_focus = matches!(current_focus,
AddTableFocus::ColumnsTable | AddTableFocus::IndexesTable | AddTableFocus::LinksTable
);
let is_right_pane_focus = matches!(current_focus,
AddTableFocus::InputTableName | AddTableFocus::InputColumnName | AddTableFocus::InputColumnType |
AddTableFocus::AddColumnButton | AddTableFocus::SaveButton | AddTableFocus::CancelButton
let is_right_pane_general_focus = matches!(current_focus, // Non-canvas elements in right pane
AddTableFocus::AddColumnButton | AddTableFocus::SaveButton | AddTableFocus::CancelButton
);
let is_canvas_input_focus = matches!(current_focus,
AddTableFocus::InputTableName | AddTableFocus::InputColumnName | AddTableFocus::InputColumnType
);
match action.as_deref() {
@@ -95,7 +97,7 @@ pub fn handle_add_table_navigation(
AddTableFocus::LinksTable => AddTableFocus::SaveButton,
_ => current_focus, // Should not happen based on is_left_pane_focus
};
} else if is_right_pane_focus {
} else if is_right_pane_general_focus || is_canvas_input_focus {
// If already in right pane, maybe wrap Save -> Cancel or stay? Let's handle Save->Cancel only.
if current_focus == AddTableFocus::SaveButton {
new_focus = AddTableFocus::CancelButton;
@@ -103,7 +105,7 @@ pub fn handle_add_table_navigation(
}
}
Some("previous_option") => { // 'h' or Left: Move from Right Pane to Left Pane
if is_right_pane_focus {
if is_right_pane_general_focus {
new_focus = match current_focus {
// Map right pane items back to left pane items (approximate vertical alignment)
AddTableFocus::InputTableName | AddTableFocus::InputColumnName | AddTableFocus::InputColumnType | AddTableFocus::AddColumnButton => AddTableFocus::ColumnsTable, // Go to top of left pane
@@ -196,6 +198,12 @@ pub fn handle_add_table_navigation(
add_table_state.current_focus = new_focus;
*command_message = format!("Focus set to {:?}", add_table_state.current_focus);
let new_is_canvas_input_focus = matches!(new_focus,
AddTableFocus::InputTableName | AddTableFocus::InputColumnName | AddTableFocus::InputColumnType
);
app_state.ui.focus_outside_canvas = !new_is_canvas_input_focus;
// Select first item when focusing a table
match add_table_state.current_focus {
AddTableFocus::ColumnsTable if add_table_state.column_table_state.selected().is_none() && !add_table_state.columns.is_empty() => {