compiled, still not working for canvas
This commit is contained in:
@@ -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() => {
|
||||
|
||||
Reference in New Issue
Block a user