Bläddra i källkod

copy fallback

Krzysztof Krysiński 3 veckor sedan
förälder
incheckning
0f7d976b50
1 ändrade filer med 25 tillägg och 3 borttagningar
  1. 25 3
      src/PixiEditor/Models/Controllers/ClipboardController.cs

+ 25 - 3
src/PixiEditor/Models/Controllers/ClipboardController.cs

@@ -187,9 +187,31 @@ internal static class ClipboardController
             data.Set(ClipboardDataFormats.ImageSlashPng, pngArray);
 
             pngStream.Position = 0;
-            Directory.CreateDirectory(Path.GetDirectoryName(TempCopyFilePath)!);
-            await using FileStream fileStream = new FileStream(TempCopyFilePath, FileMode.Create, FileAccess.Write);
-            await pngStream.CopyToAsync(fileStream);
+            try
+            {
+                Directory.CreateDirectory(Path.GetDirectoryName(TempCopyFilePath)!);
+                await using FileStream fileStream = new FileStream(TempCopyFilePath, FileMode.Create, FileAccess.Write);
+                await pngStream.CopyToAsync(fileStream);
+            }
+            catch (IOException ioException)
+            {
+                string secondaryPath = Path.Combine(
+                    Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
+                    "PixiEditor",
+                    $"Copied_{DateTime.Now:HH-mm-ss}.png");
+                try
+                {
+                    Directory.CreateDirectory(Path.GetDirectoryName(secondaryPath)!);
+                    await using FileStream fileStream =
+                        new FileStream(secondaryPath, FileMode.Create, FileAccess.Write);
+                    await pngStream.CopyToAsync(fileStream);
+                }
+                catch
+                {
+                    return;
+                }
+            }
+
             data.SetFileDropList(new[] { TempCopyFilePath });
         }
     }