add_table working properly well
This commit is contained in:
@@ -378,6 +378,40 @@ impl EventHandler {
|
||||
if !outcome.get_message_if_ok().is_empty() {
|
||||
return Ok(outcome);
|
||||
}
|
||||
} else if let Page::AddTable(add_table_page) = &mut router.current {
|
||||
// Handle AddTable before global actions so canvas gets first shot at keys.
|
||||
// Map keys to MovementAction (same as AddLogic early handler)
|
||||
let movement_action_early = if let Some(act) =
|
||||
config.get_general_action(key_event.code, key_event.modifiers)
|
||||
{
|
||||
match act {
|
||||
"up" => Some(MovementAction::Up),
|
||||
"down" => Some(MovementAction::Down),
|
||||
"left" => Some(MovementAction::Left),
|
||||
"right" => Some(MovementAction::Right),
|
||||
"next" => Some(MovementAction::Next),
|
||||
"previous" => Some(MovementAction::Previous),
|
||||
"select" => Some(MovementAction::Select),
|
||||
"esc" => Some(MovementAction::Esc),
|
||||
_ => None,
|
||||
}
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
let outcome = add_table::event::handle_add_table_event(
|
||||
key_event,
|
||||
movement_action_early,
|
||||
config,
|
||||
app_state,
|
||||
add_table_page,
|
||||
self.grpc_client.clone(),
|
||||
self.save_table_result_sender.clone(),
|
||||
)?;
|
||||
// Only stop if the page consumed the key; else let global handling proceed.
|
||||
if !outcome.get_message_if_ok().is_empty() {
|
||||
return Ok(outcome);
|
||||
}
|
||||
} else if let Page::Admin(admin_state) = &mut router.current {
|
||||
if matches!(auth_state.role, Some(UserRole::Admin)) {
|
||||
if let Event::Key(key_event) = event {
|
||||
@@ -531,41 +565,6 @@ impl EventHandler {
|
||||
}
|
||||
}
|
||||
|
||||
if let Page::AddTable(add_table_state) = &mut router.current {
|
||||
// Allow ":" (enter_command_mode) even when inside AddTable canvas
|
||||
if let Some(action) =
|
||||
config.get_general_action(key_event.code, key_event.modifiers)
|
||||
{
|
||||
if action == "enter_command_mode"
|
||||
&& !self.command_mode
|
||||
&& !app_state.ui.show_search_palette
|
||||
&& !self.navigation_state.active
|
||||
{
|
||||
self.command_mode = true;
|
||||
self.command_input.clear();
|
||||
self.command_message.clear();
|
||||
self.key_sequence_tracker.reset();
|
||||
app_state.ui.focus_outside_canvas = true;
|
||||
return Ok(EventOutcome::Ok(String::new()));
|
||||
}
|
||||
}
|
||||
|
||||
let client_clone = self.grpc_client.clone();
|
||||
let sender_clone = self.save_table_result_sender.clone();
|
||||
let outcome = crate::pages::admin_panel::add_table::event::handle_add_table_event(
|
||||
key_event,
|
||||
movement_action,
|
||||
config,
|
||||
app_state,
|
||||
add_table_state,
|
||||
client_clone,
|
||||
sender_clone,
|
||||
)?;
|
||||
if !outcome.get_message_if_ok().is_empty() {
|
||||
return Ok(outcome);
|
||||
}
|
||||
}
|
||||
|
||||
// Generic navigation for the rest (Intro/Login/Register/Form)
|
||||
let nav_outcome = if matches!(&router.current, Page::AddTable(_) | Page::AddLogic(_)) {
|
||||
// Skip generic navigation for AddTable/AddLogic (they have their own handlers)
|
||||
|
||||
Reference in New Issue
Block a user