diff --git a/VoiceInk/Views/Settings/SettingsView.swift b/VoiceInk/Views/Settings/SettingsView.swift index 99baba9..9485fae 100644 --- a/VoiceInk/Views/Settings/SettingsView.swift +++ b/VoiceInk/Views/Settings/SettingsView.swift @@ -18,6 +18,7 @@ struct SettingsView: View { @State private var showResetOnboardingAlert = false @State private var currentShortcut = KeyboardShortcuts.getShortcut(for: .toggleMiniRecorder) @State private var isCustomCancelEnabled = false + @AppStorage("shouldPreserveClipboard") private var shouldPreserveClipboard = false var body: some View { ScrollView { @@ -131,6 +132,12 @@ struct SettingsView: View { } .toggleStyle(.switch) .help("Automatically pause active media playback when recording starts and resume when recording stops") + + Toggle(isOn: $shouldPreserveClipboard) { + Text("Preserve clipboard after paste") + } + .toggleStyle(.switch) + .help("After pasting the transcript, the clipboard will be restored to its previous content.") } } diff --git a/VoiceInk/Whisper/WhisperState.swift b/VoiceInk/Whisper/WhisperState.swift index ef33be2..5aa9395 100644 --- a/VoiceInk/Whisper/WhisperState.swift +++ b/VoiceInk/Whisper/WhisperState.swift @@ -27,6 +27,7 @@ class WhisperState: NSObject, ObservableObject { @Published var clipboardMessage = "" @Published var miniRecorderError: String? @Published var shouldCancelRecording = false + @AppStorage("shouldPreserveClipboard") private var shouldPreserveClipboard = false @Published var recorderType: String = UserDefaults.standard.string(forKey: "RecorderType") ?? "mini" { didSet { @@ -355,7 +356,7 @@ class WhisperState: NSObject, ObservableObject { DispatchQueue.main.asyncAfter(deadline: .now() + 0.05) { - CursorPaster.pasteAtCursor(text, shouldPreserveClipboard: true) + CursorPaster.pasteAtCursor(text, shouldPreserveClipboard: self.shouldPreserveClipboard) let powerMode = PowerModeManager.shared if let activeConfig = powerMode.currentActiveConfiguration, activeConfig.isAutoSendEnabled {