浏览代码

Fix savning as without image to properly generate random file name: `Unable to save images via clipboard` #244

Fix navigation and file saving issues in NavigationManager and FileSaverHelper

- Handle single image loading in navigation gracefully when index is -1.
- Correct `IsEnabled` binding for Save menu in MainView.
- Fix null handling when suggesting a filename in FileSaverHelper.
Ruben 1 月之前
父节点
当前提交
a94f6e15c3

+ 1 - 1
src/PicView.Avalonia/FileSystem/FileSaverHelper.cs

@@ -35,7 +35,7 @@ public static class FileSaverHelper
         }
         
         // Suggest random filename for saving, if it is not an existing file
-        var fileName = vm.PicViewer.FileInfo is null ? Path.GetRandomFileName() : vm.PicViewer.FileInfo.CurrentValue.Name;
+        var fileName = vm.PicViewer?.FileInfo?.CurrentValue is null ? Path.GetRandomFileName() : vm.PicViewer.FileInfo.CurrentValue.Name;
 
         await FilePicker.PickAndSaveFileAsAsync(fileName, vm);
     }

+ 6 - 0
src/PicView.Avalonia/Navigation/NavigationManager.cs

@@ -73,6 +73,12 @@ public static class NavigationManager
         {
             ImageIterator = new ImageIterator(fileInfo, vm);
             index = ImageIterator.CurrentIndex;
+            if (index == -1)
+            {
+                await UpdateImage.SetSingleImageAsync(imageModel.Image, imageModel.ImageType,
+                    TranslationManager.Translation.ClipboardImage, vm);
+                return;
+            }
         }
         else
         {

+ 1 - 1
src/PicView.Avalonia/Views/Main/MainView.axaml

@@ -43,7 +43,7 @@
                 Command="{CompiledBinding Tools.SaveFileCommand}"
                 Header="{CompiledBinding Translation.Save.Value,
                                          Mode=OneWay}"
-                IsEnabled="{CompiledBinding PicViewer.ImageSource.Value,
+                IsEnabled="{CompiledBinding PicViewer.FileInfo.Value,
                                             Converter={x:Static ObjectConverters.IsNotNull}}">
                 <MenuItem.Icon>
                     <Path Classes="SavePath" />