working cursor tracking in the add_table
This commit is contained in:
@@ -104,7 +104,10 @@ pub fn handle_add_table_navigation(
|
|||||||
match current_focus {
|
match current_focus {
|
||||||
AddTableFocus::InputTableName => new_focus = AddTableFocus::InputColumnName,
|
AddTableFocus::InputTableName => new_focus = AddTableFocus::InputColumnName,
|
||||||
AddTableFocus::InputColumnName => new_focus = AddTableFocus::InputColumnType,
|
AddTableFocus::InputColumnName => new_focus = AddTableFocus::InputColumnType,
|
||||||
AddTableFocus::InputColumnType => new_focus = AddTableFocus::AddColumnButton,
|
AddTableFocus::InputColumnType => {
|
||||||
|
add_table_state.last_canvas_field = 2;
|
||||||
|
new_focus = AddTableFocus::AddColumnButton;
|
||||||
|
},
|
||||||
AddTableFocus::AddColumnButton => new_focus = AddTableFocus::ColumnsTable,
|
AddTableFocus::AddColumnButton => new_focus = AddTableFocus::ColumnsTable,
|
||||||
AddTableFocus::ColumnsTable => new_focus = AddTableFocus::IndexesTable,
|
AddTableFocus::ColumnsTable => new_focus = AddTableFocus::IndexesTable,
|
||||||
AddTableFocus::IndexesTable => new_focus = AddTableFocus::LinksTable,
|
AddTableFocus::IndexesTable => new_focus = AddTableFocus::LinksTable,
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ pub struct AddTableState {
|
|||||||
pub indexes: Vec<IndexDefinition>,
|
pub indexes: Vec<IndexDefinition>,
|
||||||
pub links: Vec<LinkDefinition>,
|
pub links: Vec<LinkDefinition>,
|
||||||
pub current_focus: AddTableFocus,
|
pub current_focus: AddTableFocus,
|
||||||
|
pub last_canvas_field: usize,
|
||||||
pub column_table_state: TableState,
|
pub column_table_state: TableState,
|
||||||
pub index_table_state: TableState,
|
pub index_table_state: TableState,
|
||||||
pub link_table_state: TableState,
|
pub link_table_state: TableState,
|
||||||
@@ -77,6 +78,7 @@ impl Default for AddTableState {
|
|||||||
indexes: Vec::new(),
|
indexes: Vec::new(),
|
||||||
links: Vec::new(),
|
links: Vec::new(),
|
||||||
current_focus: AddTableFocus::InputTableName,
|
current_focus: AddTableFocus::InputTableName,
|
||||||
|
last_canvas_field: 2,
|
||||||
column_table_state: TableState::default(),
|
column_table_state: TableState::default(),
|
||||||
index_table_state: TableState::default(),
|
index_table_state: TableState::default(),
|
||||||
link_table_state: TableState::default(),
|
link_table_state: TableState::default(),
|
||||||
@@ -100,7 +102,7 @@ impl CanvasState for AddTableState {
|
|||||||
AddTableFocus::InputColumnName => 1,
|
AddTableFocus::InputColumnName => 1,
|
||||||
AddTableFocus::InputColumnType => 2,
|
AddTableFocus::InputColumnType => 2,
|
||||||
// If focus is elsewhere, default to the first field for canvas rendering logic
|
// If focus is elsewhere, default to the first field for canvas rendering logic
|
||||||
_ => 0,
|
_ => self.last_canvas_field,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,10 +147,20 @@ impl CanvasState for AddTableState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn set_current_field(&mut self, index: usize) {
|
fn set_current_field(&mut self, index: usize) {
|
||||||
|
// Update both current focus and last canvas field
|
||||||
self.current_focus = match index {
|
self.current_focus = match index {
|
||||||
0 => AddTableFocus::InputTableName,
|
0 => {
|
||||||
1 => AddTableFocus::InputColumnName,
|
self.last_canvas_field = 0;
|
||||||
2 => AddTableFocus::InputColumnType,
|
AddTableFocus::InputTableName
|
||||||
|
},
|
||||||
|
1 => {
|
||||||
|
self.last_canvas_field = 1;
|
||||||
|
AddTableFocus::InputColumnName
|
||||||
|
},
|
||||||
|
2 => {
|
||||||
|
self.last_canvas_field = 2;
|
||||||
|
AddTableFocus::InputColumnType
|
||||||
|
},
|
||||||
_ => self.current_focus, // Stay on current focus if index is out of bounds
|
_ => self.current_focus, // Stay on current focus if index is out of bounds
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user