Просмотр исходного кода

Fix incorrect size when starting up with scrolling enabled

Ruben 10 месяцев назад
Родитель
Сommit
dae5f1a0c9

+ 21 - 1
src/PicView.Avalonia/StartUp/QuickLoad.cs

@@ -48,7 +48,11 @@ public static class QuickLoad
         await Dispatcher.UIThread.InvokeAsync(() =>
         {
             vm.ImageViewer.SetTransform(imageModel.EXIFOrientation);
-            WindowResizing.SetSize(imageModel.PixelWidth, imageModel.PixelHeight, secondaryPreloadValue?.ImageModel?.PixelWidth ?? 0, secondaryPreloadValue?.ImageModel?.PixelHeight ?? 0, imageModel.Rotation, vm);
+            if (!Settings.Zoom.ScrollEnabled)
+            {
+                WindowResizing.SetSize(imageModel.PixelWidth, imageModel.PixelHeight, secondaryPreloadValue?.ImageModel?.PixelWidth ?? 0, secondaryPreloadValue?.ImageModel?.PixelHeight ?? 0, imageModel.Rotation, vm);
+            }
+
             if (Settings.WindowProperties.AutoFit)
             {
                 WindowFunctions.CenterWindowOnScreen();
@@ -89,6 +93,22 @@ public static class QuickLoad
         
         vm.ExifOrientation = imageModel.EXIFOrientation;
         
+        if (Settings.Zoom.ScrollEnabled)
+        {
+            // Bad fix for scrolling
+            // TODO: Implement proper startup scrolling fix
+            Settings.Zoom.ScrollEnabled = false;
+            await Dispatcher.UIThread.InvokeAsync(() =>
+            {
+                WindowResizing.SetSize(imageModel.PixelWidth, imageModel.PixelHeight, secondaryPreloadValue?.ImageModel?.PixelWidth ?? 0, secondaryPreloadValue?.ImageModel?.PixelHeight ?? 0, imageModel.Rotation, vm);
+            }, DispatcherPriority.Background);
+            Settings.Zoom.ScrollEnabled = true;
+            await Dispatcher.UIThread.InvokeAsync(() =>
+            {
+                WindowResizing.SetSize(imageModel.PixelWidth, imageModel.PixelHeight, secondaryPreloadValue?.ImageModel?.PixelWidth ?? 0, secondaryPreloadValue?.ImageModel?.PixelHeight ?? 0, imageModel.Rotation, vm);
+            }, DispatcherPriority.Send);
+        }
+        
         // Add recent files, except when browsing archive
         if (string.IsNullOrWhiteSpace(TempFileHelper.TempFilePath))
         {

+ 12 - 12
src/PicView.Avalonia/StartUp/StartUpHelper.cs

@@ -76,20 +76,20 @@ public static class StartUpHelper
         window.Show();
         vm.ImageViewer = new ImageViewer();
         
-        ResourceLimits.LimitMemory(new Percentage(90));
         HandleStartUpMenuOrImage(vm, args);
-        Task.Run(async () =>
+        
+        ResourceLimits.LimitMemory(new Percentage(90));
+
+        Task.Run(() => LanguageUpdater.UpdateLanguageAsync(vm, settingsExists));
+        if (settingsExists)
         {
-            await LanguageUpdater.UpdateLanguageAsync(vm, settingsExists).ConfigureAwait(false);
-            if (settingsExists)
-            {
-                await KeybindingManager.LoadKeybindings(vm.PlatformService).ConfigureAwait(false);
-            }
-            else
-            {
-                await KeybindingManager.SetDefaultKeybindings(vm.PlatformService).ConfigureAwait(false);
-            }
-        });
+            Task.Run(() => KeybindingManager.LoadKeybindings(vm.PlatformService));
+        }
+        else
+        {
+            Task.Run(() => KeybindingManager.SetDefaultKeybindings(vm.PlatformService));
+        }
+
         HandleThemeUpdates(vm);
         
         if (settingsExists)

+ 5 - 1
src/PicView.Avalonia/WindowBehavior/WindowResizing.cs

@@ -67,13 +67,17 @@ public static class WindowResizing
                     return;
                 }
             }
-            else
+            else if (vm.FileInfo?.Exists != null)
             {
                 var magickImage = new MagickImage();
                 magickImage.Ping(vm.FileInfo);
                 firstWidth = magickImage.Width;
                 firstHeight = magickImage.Height;
             }
+            else
+            {
+                return;
+            }
         }
         else
         {

+ 1 - 1
src/PicView.Core/Calculations/ImageSizeCalculationHelper.cs

@@ -331,7 +331,7 @@ public static class ImageSizeCalculationHelper
 
             if (Settings.Zoom.ScrollEnabled)
             {
-                titleMaxWidth += SizeDefaults.ScrollbarSize + 4;
+                titleMaxWidth += SizeDefaults.ScrollbarSize + 10;
             }
         }
         else