Skip to main content

fresh/app/
event_debug_actions.rs

1//! Event debug dialog action handling
2//!
3//! This module provides the action handlers for the event debug dialog.
4//! All handlers operate on the active window's `event_debug` slot.
5
6use super::event_debug::EventDebug;
7use super::window::Window;
8use crate::input::handler::InputResult;
9use crossterm::event::KeyEvent;
10use rust_i18n::t;
11
12impl Window {
13    /// Open the event debug dialog in this window.
14    pub fn open_event_debug(&mut self) {
15        self.event_debug = Some(EventDebug::new());
16        self.set_status_message(t!("event_debug.started").to_string());
17    }
18
19    /// Handle input when the event debug dialog is active in this window.
20    pub fn handle_event_debug_input(&mut self, event: &KeyEvent) -> InputResult {
21        // Take the dialog temporarily to avoid borrowing issues.
22        let mut debug = match self.event_debug.take() {
23            Some(d) => d,
24            None => return InputResult::Ignored,
25        };
26
27        // Record the event.
28        debug.record_event(*event);
29
30        if debug.should_close() {
31            self.set_status_message(t!("event_debug.closed").to_string());
32            // Don't put it back — it's closed.
33        } else {
34            self.event_debug = Some(debug);
35        }
36
37        InputResult::Consumed
38    }
39
40    /// Check if the event debug dialog is active in this window.
41    pub fn is_event_debug_active(&self) -> bool {
42        self.event_debug.is_some()
43    }
44}