diff --git a/src-tauri/src/actions.rs b/src-tauri/src/actions.rs index 602de2e..8232ded 100644 --- a/src-tauri/src/actions.rs +++ b/src-tauri/src/actions.rs @@ -8,6 +8,7 @@ use crate::settings::{get_settings, AppSettings, APPLE_INTELLIGENCE_PROVIDER_ID} use crate::shortcut; use crate::tray::{change_tray_icon, TrayIconState}; use crate::utils::{self, show_recording_overlay, show_transcribing_overlay}; +use crate::ManagedToggleState; use ferrous_opencc::{config::BuiltinConfig, OpenCC}; use log::{debug, error}; use once_cell::sync::Lazy; @@ -408,6 +409,11 @@ impl ShortcutAction for TranscribeAction { utils::hide_recording_overlay(&ah); change_tray_icon(&ah, TrayIconState::Idle); } + + // Clear toggle state now that transcription is complete + if let Ok(mut states) = ah.state::().lock() { + states.active_toggles.insert(binding_id, false); + } }); debug!( diff --git a/src-tauri/src/signal_handle.rs b/src-tauri/src/signal_handle.rs index ff4ad2d..f09a616 100644 --- a/src-tauri/src/signal_handle.rs +++ b/src-tauri/src/signal_handle.rs @@ -47,7 +47,9 @@ pub fn setup_signal_handler(app_handle: AppHandle, mut signals: Signals) { .or_insert(false); should_start = !*is_currently_active; - *is_currently_active = should_start; + if should_start { + *is_currently_active = true; + } } // Lock released here // Now call the action without holding the lock