move out of canvas properly fixed, now working everyhing properly well
This commit is contained in:
@@ -332,6 +332,52 @@ impl EventHandler {
|
||||
if !outcome.get_message_if_ok().is_empty() {
|
||||
return Ok(outcome);
|
||||
}
|
||||
} else if let Page::AddLogic(add_logic_page) = &mut router.current {
|
||||
// Allow ":" (enter_command_mode) even when inside AddLogic 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 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_logic::event::handle_add_logic_event(
|
||||
key_event,
|
||||
movement_action_early,
|
||||
config,
|
||||
app_state,
|
||||
add_logic_page,
|
||||
self.grpc_client.clone(),
|
||||
self.save_logic_result_sender.clone(),
|
||||
)?;
|
||||
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 {
|
||||
@@ -432,6 +478,22 @@ impl EventHandler {
|
||||
}
|
||||
}
|
||||
}
|
||||
// Allow ":" / ctrl+; to enter command mode only when outside canvas.
|
||||
if action == "enter_command_mode" {
|
||||
if app_state.ui.focus_outside_canvas
|
||||
&& !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();
|
||||
// Keep focus outside so canvas won't receive keys
|
||||
app_state.ui.focus_outside_canvas = true;
|
||||
return Ok(EventOutcome::Ok(String::new()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -485,22 +547,6 @@ impl EventHandler {
|
||||
return Ok(EventOutcome::Ok(self.command_message.clone()));
|
||||
}
|
||||
}
|
||||
if let Page::AddLogic(add_logic_page) = &mut router.current {
|
||||
let client_clone = self.grpc_client.clone();
|
||||
let sender_clone = self.save_logic_result_sender.clone();
|
||||
if add_logic::event::handle_add_logic_event(
|
||||
key_event,
|
||||
movement_action,
|
||||
config,
|
||||
app_state,
|
||||
add_logic_page,
|
||||
client_clone,
|
||||
sender_clone,
|
||||
&mut self.command_message,
|
||||
) {
|
||||
return Ok(EventOutcome::Ok(self.command_message.clone()));
|
||||
}
|
||||
}
|
||||
|
||||
// Generic navigation for the rest (Intro/Login/Register/Form)
|
||||
let nav_outcome = if matches!(&router.current, Page::AddTable(_) | Page::AddLogic(_)) {
|
||||
|
||||
Reference in New Issue
Block a user