From 24dbf013e71e6593a12a2e3c93e67c719ac99a5f Mon Sep 17 00:00:00 2001 From: SuperDooper <37051355+superdooper86@users.noreply.github.com> Date: Mon, 11 May 2026 21:44:21 +0200 Subject: [PATCH] Fix clipboard crash: use SetDataObject(false) to skip Flush() --- windows/PopupWindow.xaml.cs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/windows/PopupWindow.xaml.cs b/windows/PopupWindow.xaml.cs index 45054b6..5e00bd3 100644 --- a/windows/PopupWindow.xaml.cs +++ b/windows/PopupWindow.xaml.cs @@ -495,13 +495,21 @@ public partial class PopupWindow : Window private void CopyDiag_Click(object s, RoutedEventArgs e) { - var diagText = BuildDiagText(); - for (int i = 0; i < 5; i++) + try { - try { Clipboard.SetText(diagText); break; } - catch (Exception) { System.Threading.Thread.Sleep(100); } + // SetDataObject(data, false) skips Flush() — avoids CLIPBRD_E_CANT_OPEN crash + var diagText = BuildDiagText(); + for (int i = 0; i < 5; i++) + { + try { Clipboard.SetDataObject(diagText, false); break; } + catch (Exception) { System.Threading.Thread.Sleep(100); } + } + CopyDiagButton.Content = "Copied! (IDs redacted)"; + } + catch (Exception) + { + CopyDiagButton.Content = "Copy failed"; } - CopyDiagButton.Content = "Copied! (IDs redacted)"; var t = new DispatcherTimer { Interval = TimeSpan.FromSeconds(1.5) }; t.Tick += (_, _) => { CopyDiagButton.Content = "Copy All"; t.Stop(); }; t.Start();