Explorar o código

Code cleaning & null checking

Ruben %!s(int64=4) %!d(string=hai) anos
pai
achega
337adb9c39
Modificáronse 43 ficheiros con 331 adicións e 330 borrados
  1. 2 17
      .editorconfig
  2. 12 15
      PicView/ChangeImage/Error_Handling.cs
  3. 53 46
      PicView/ChangeImage/Navigation.cs
  4. 6 7
      PicView/ChangeTitlebar/EditTitleBar.cs
  5. 4 9
      PicView/ConfigureSettings/UpdateUIValues.cs
  6. 2 3
      PicView/Editing/Color_Picking.cs
  7. 4 4
      PicView/Editing/Crop/CropFunctions.cs
  8. 2 2
      PicView/FileHandling/ArchiveExtraction.cs
  9. 8 5
      PicView/FileHandling/Copy-paste.cs
  10. 4 4
      PicView/FileHandling/DeleteFiles.cs
  11. 2 4
      PicView/FileHandling/Open_Save.cs
  12. 8 8
      PicView/FileHandling/WebFunctions.cs
  13. 2 2
      PicView/ImageHandling/Base64.cs
  14. 2 2
      PicView/ImageHandling/GetImageData.cs
  15. 1 1
      PicView/ImageHandling/ImageFunctions.cs
  16. 8 8
      PicView/PicGallery/GalleryClick.cs
  17. 1 1
      PicView/PicGallery/GalleryFunctions.cs
  18. 1 3
      PicView/PicGallery/GalleryLoad.cs
  19. 4 4
      PicView/PicGallery/GalleryToggle.cs
  20. 1 1
      PicView/PicView.csproj
  21. 4 5
      PicView/ProcessHandling/ProcessLogic.cs
  22. 4 2
      PicView/Shortcuts/GenericWindowShortcuts.cs
  23. 0 1
      PicView/SystemIntegration/MonitorSize.cs
  24. 26 8
      PicView/SystemIntegration/Taskbar.cs
  25. 8 10
      PicView/UILogic/DragAndDrop/Image_DragAndDrop.cs
  26. 2 2
      PicView/UILogic/Loading/EventsHandling.cs
  27. 1 1
      PicView/UILogic/Loading/LoadContextMenus.cs
  28. 10 13
      PicView/UILogic/Loading/StartLoading.cs
  29. 6 7
      PicView/UILogic/Sizing/ScaleImage.cs
  30. 1 1
      PicView/UILogic/Slideshow.cs
  31. 3 4
      PicView/UILogic/Timers.cs
  32. 4 1
      PicView/UILogic/Tooltip.cs
  33. 5 6
      PicView/UILogic/TransformImage/Scroll.cs
  34. 4 4
      PicView/UILogic/TransformImage/Zoom.cs
  35. 4 5
      PicView/Views/UserControls/Buttons/GoToPicButton.xaml.cs
  36. 0 1
      PicView/Views/UserControls/Gallery/PicGalleryItem.xaml.cs
  37. 1 1
      PicView/Views/UserControls/Menus/ToolsAndEffectsMenu.xaml.cs
  38. 7 3
      PicView/Views/UserControls/Misc/DragDropOverlay.xaml
  39. 2 2
      PicView/Views/UserControls/Misc/FolderIcon.xaml
  40. 78 79
      PicView/Views/Windows/EffectsWindows.xaml.cs
  41. 2 2
      PicView/Views/Windows/ImageInfoWindow.xaml.cs
  42. 27 26
      PicView/Views/Windows/InfoWindow.xaml
  43. 5 0
      PicView/Views/Windows/SettingsWindow.xaml

+ 2 - 17
.editorconfig

@@ -1,19 +1,4 @@
 [*.cs]
 
-# CA1031: Do not catch general exception types
-dotnet_diagnostic.CA1031.severity = none
-
-# IDE0060: Remove unused parameter
-dotnet_code_quality_unused_parameters = all:suggestion
-
-# IDE0008: Use explicit type
-csharp_style_var_elsewhere = true
-
-# Default severity for analyzer diagnostics with category 'Style'
-dotnet_analyzer_diagnostic.category-Style.severity = none
-
-# CS8602: Dereference of a possibly null reference.
-dotnet_diagnostic.CS8602.severity = silent
-
-# CS8622: Nullability of reference types in type of parameter doesn't match the target delegate (possibly because of nullability attributes).
-dotnet_diagnostic.CS8622.severity = silent
+# CS8604: Possible null reference argument.
+dotnet_diagnostic.CS8604.severity = silent

+ 12 - 15
PicView/ChangeImage/Error_Handling.cs

@@ -17,7 +17,7 @@ namespace PicView.ChangeImage
     {
         internal static bool CheckOutOfRange()
         {
-            if (Pics.Count < FolderIndex || Pics.Count < 1)
+            if (Pics?.Count < FolderIndex || Pics?.Count < 1)
             {
                 return true;
             }
@@ -29,7 +29,7 @@ namespace PicView.ChangeImage
         /// </summary>
         internal static void ChangeFolder(bool backup = false)
         {
-            if (Pics.Count > 0 && backup)
+            if (Pics?.Count > 0 && backup)
             {
                 // Make a backup of xPicPath and FolderIndex
                 if (!string.IsNullOrWhiteSpace(Pics[FolderIndex]))
@@ -43,7 +43,7 @@ namespace PicView.ChangeImage
             {
                 GalleryFunctions.Clear();
             }
-            
+
             Preloader.Clear();
             FreshStartup = true;
             DeleteTempFiles();
@@ -56,11 +56,11 @@ namespace PicView.ChangeImage
         {
             if (fromBackup && string.IsNullOrWhiteSpace(BackupPath))
             {
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke((Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(() =>
                 {
                     Unload();
-                }));
-               
+                });
+
                 return;
             }
 
@@ -79,11 +79,11 @@ namespace PicView.ChangeImage
                 // Force reloading values by setting freshStartup to true
                 FreshStartup = true;
 
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke((Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(() =>
                 {
                     // Clear Preloader, to avoid errors by FolderIndex changing location because of re-sorting
                     Preloader.Clear();
-                }));
+                });
 
 
                 if (UC.GetPicGallery?.Container?.Children?.Count > 0)
@@ -97,7 +97,7 @@ namespace PicView.ChangeImage
                 }
 
                 // Reset
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke((Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(() =>
                 {
                     if (Flipped)
                     {
@@ -108,7 +108,7 @@ namespace PicView.ChangeImage
                     {
                         Rotate(0);
                     }
-                }));
+                });
 
             }
             else if (Clipboard.ContainsImage() || Base64.IsBase64String(s))
@@ -121,10 +121,7 @@ namespace PicView.ChangeImage
             }
             else
             {
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke((Action)(() =>
-                {
-                    Unload();
-                }));
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(() => { Unload(); });
             }
         }
 
@@ -157,7 +154,7 @@ namespace PicView.ChangeImage
 
             try
             {
-                SystemIntegration.Taskbar.NoProgress();
+                _ = SystemIntegration.Taskbar.NoProgress();
             }
             catch { }
         }

+ 53 - 46
PicView/ChangeImage/Navigation.cs

@@ -3,7 +3,6 @@ using PicView.ImageHandling;
 using PicView.PicGallery;
 using PicView.SystemIntegration;
 using PicView.UILogic;
-using PicView.UILogic.Sizing;
 using System;
 using System.Globalization;
 using System.IO;
@@ -89,7 +88,7 @@ namespace PicView.ChangeImage
         /// <returns></returns>
         internal static async Task LoadPicFromString(string path)
         {
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
             {
                 // Set Loading
                 SetLoadingString();
@@ -100,11 +99,10 @@ namespace PicView.ChangeImage
                     ConfigureWindows.GetMainWindow.MainImage.Width = ConfigureWindows.GetMainWindow.ParentContainer.ActualWidth;
                     ConfigureWindows.GetMainWindow.MainImage.Height = ConfigureWindows.GetMainWindow.ParentContainer.ActualHeight;
                 }
-            }));
+            });
             if (!File.Exists(path))
             {
-                Uri? uriResult;
-                bool result = Uri.TryCreate(path, UriKind.Absolute, out uriResult)
+                bool result = Uri.TryCreate(path, UriKind.Absolute, out Uri? uriResult)
                     && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
 
                 if (result)
@@ -128,7 +126,7 @@ namespace PicView.ChangeImage
 
                 if (File.Exists(path))
                 {
-                    await ScaleImage.TryFitImageAsync(path).ConfigureAwait(false);
+                    await TryFitImageAsync(path).ConfigureAwait(false);
 
                     await LoadPiFromFileAsync(path).ConfigureAwait(false);
                 }
@@ -139,17 +137,17 @@ namespace PicView.ChangeImage
                 }
                 else
                 {
-                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
                     {
                         Unload();
-                    }));
+                    });
                 }
 
                 return;
             }
 
             // set up size so it feels better when starting application
-            await ScaleImage.TryFitImageAsync(path).ConfigureAwait(false);
+            await TryFitImageAsync(path).ConfigureAwait(false);
 
             await LoadPiFromFileAsync(path).ConfigureAwait(false);
         }
@@ -225,7 +223,7 @@ namespace PicView.ChangeImage
             {
                 if (GalleryFunctions.IsOpen == false)
                 {
-                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
                     {
                         // Show a thumbnail while loading
                         var thumb = GetThumb(index); // Need to be in dispatcher to prevent crashing when changing folder while picgallery is loading items
@@ -249,7 +247,7 @@ namespace PicView.ChangeImage
                         {
                             ConfigureWindows.GetMainWindow.MainImage.Source = thumb;
                         }
-                    }));
+                    });
                 }
                 if (FastPicRunning)
                 {
@@ -295,10 +293,10 @@ namespace PicView.ChangeImage
 
 
             // Need to put UI change in dispatcher to fix slideshow bug
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, () =>
             {
                 UpdatePic(index, preloadValue.bitmapSource);
-            }));
+            });
 
             // Update values
             CanNavigate = true;
@@ -314,7 +312,7 @@ namespace PicView.ChangeImage
 
             if (Pics?.Count > 1)
             {
-                Taskbar.Progress(index, Pics.Count);
+                await Taskbar.Progress((double)index / Pics.Count).ConfigureAwait(false);
 
                 await Preloader.PreLoad(index).ConfigureAwait(false);
             }
@@ -344,13 +342,17 @@ namespace PicView.ChangeImage
             {
                 UILogic.TransformImage.Rotation.Flipped = false;
                 UILogic.TransformImage.Rotation.Rotateint = 0;
-                GetQuickSettingsMenu.FlipButton.TheButton.IsChecked = false;
+                if (GetQuickSettingsMenu is not null && GetQuickSettingsMenu.FlipButton is not null)
+                {
+                    GetQuickSettingsMenu.FlipButton.TheButton.IsChecked = false;
+                }
 
                 ConfigureWindows.GetMainWindow.MainImage.LayoutTransform = null;
             }
 
             // Loads gif from XamlAnimatedGif if neccesary
-            if (Path.GetExtension(Pics?[index]).Equals(".gif", StringComparison.OrdinalIgnoreCase))
+            string? ext = Path.GetExtension(Pics?[index]);
+            if (ext is not null && ext.Equals(".gif", StringComparison.OrdinalIgnoreCase))
             {
                 XamlAnimatedGif.AnimationBehavior.SetSourceUri(ConfigureWindows.GetMainWindow.MainImage, new Uri(Pics?[index]));
             }
@@ -372,23 +374,26 @@ namespace PicView.ChangeImage
         /// </summary>
         /// <param name="imageName"></param>
         /// <param name="bitmapSource"></param>
-        internal static void UpdatePic(string imageName, BitmapSource bitmapSource)
+        internal static async Task UpdatePic(string imageName, BitmapSource bitmapSource)
         {
-            Unload();
-
-            if (Properties.Settings.Default.ScrollEnabled)
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, () =>
             {
-                ConfigureWindows.GetMainWindow.Scroller.ScrollToTop();
-            }
+                Unload();
 
-            ConfigureWindows.GetMainWindow.MainImage.Source = bitmapSource;
+                if (Properties.Settings.Default.ScrollEnabled)
+                {
+                    ConfigureWindows.GetMainWindow.Scroller.ScrollToTop();
+                }
+
+                ConfigureWindows.GetMainWindow.MainImage.Source = bitmapSource;
 
-            FitImage(bitmapSource.PixelWidth, bitmapSource.PixelHeight);
-            SetTitleString(bitmapSource.PixelWidth, bitmapSource.PixelHeight, imageName);
+                FitImage(bitmapSource.PixelWidth, bitmapSource.PixelHeight);
+                SetTitleString(bitmapSource.PixelWidth, bitmapSource.PixelHeight, imageName);
+            });
 
             CloseToolTipMessage();
 
-            Taskbar.NoProgress();
+            await Taskbar.NoProgress().ConfigureAwait(false);
 
             CanNavigate = false;
             FolderIndex = 0;
@@ -397,7 +402,7 @@ namespace PicView.ChangeImage
             {
                 if (ConfigureWindows.GetImageInfoWindow.IsVisible)
                 {
-                    _ = ConfigureWindows.GetImageInfoWindow.UpdateValuesAsync(imageName);
+                    await ConfigureWindows.GetImageInfoWindow.UpdateValuesAsync(imageName).ConfigureAwait(false);
                 }
             }
 
@@ -411,7 +416,7 @@ namespace PicView.ChangeImage
         /// <param name="imageName"></param>
         internal static void Pic(BitmapSource bitmap, string imageName)
         {
-            UpdatePic(imageName, bitmap);
+            _ = UpdatePic(imageName, bitmap);
 
             DeleteFiles.DeleteTempFiles();
         }
@@ -424,7 +429,7 @@ namespace PicView.ChangeImage
         internal static async Task PicAsync(string file, string imageName, bool isGif)
         {
             BitmapSource? bitmapSource = isGif ? null : await ImageDecoder.RenderToBitmapSource(file).ConfigureAwait(false);
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(async () =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, async () =>
             {
                 if (Properties.Settings.Default.ScrollEnabled)
                 {
@@ -455,9 +460,9 @@ namespace PicView.ChangeImage
                 }
 
                 CloseToolTipMessage();
-            }));
+            });
 
-            Taskbar.NoProgress();
+            await Taskbar.NoProgress().ConfigureAwait(false);
             CanNavigate = false;
             FolderIndex = 0;
 
@@ -488,15 +493,14 @@ namespace PicView.ChangeImage
             {
                 return;
             }
-            var b64 = Application.Current.Resources["Base64Image"] as string;
-            if (b64 == null)
+            if (Application.Current.Resources["Base64Image"] is not string b64)
             {
                 return;
             }
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, async () =>
             {
-                UpdatePic(b64, pic);
-            }));
+                await UpdatePic(b64, pic).ConfigureAwait(false);
+            });
         }
 
         /// <summary>
@@ -506,11 +510,11 @@ namespace PicView.ChangeImage
         internal static async Task LoadPicFromFolderAsync(string folder)
         {
             // TODO add new function that can go to next/prev folder
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
             {
                 ChangeFolder(true);
-            }));
-            
+            });
+
 
             // If searching subdirectories, it might freeze UI, so wrap it in task
             await Task.Run(() =>
@@ -526,9 +530,12 @@ namespace PicView.ChangeImage
             {
                 await ReloadAsync(true).ConfigureAwait(false);
             }
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(async () =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, async () =>
             {
-                GetImageSettingsMenu.GoToPic.GoToPicBox.Text = (FolderIndex + 1).ToString(CultureInfo.CurrentCulture);
+                if (GetImageSettingsMenu is not null)
+                {
+                    GetImageSettingsMenu.GoToPic.GoToPicBox.Text = (FolderIndex + 1).ToString(CultureInfo.CurrentCulture);
+                }
 
                 // Load new gallery values, if changing folder
                 if (GetPicGallery != null && Properties.Settings.Default.FullscreenGallery)
@@ -538,7 +545,7 @@ namespace PicView.ChangeImage
                         await GalleryLoad.Load().ConfigureAwait(false);
                     }
                 }
-            }));
+            });
         }
 
         #endregion Update Image values
@@ -633,7 +640,7 @@ namespace PicView.ChangeImage
             // Update PicGallery selected item, if needed
             if (GalleryFunctions.IsOpen)
             {
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
                 {
                     if (GetPicGallery?.Container.Children.Count > FolderIndex && GetPicGallery.Container.Children.Count > indexBackup)
                     {
@@ -651,7 +658,7 @@ namespace PicView.ChangeImage
                     }
 
                     CloseToolTipMessage();
-                }));
+                });
             }
         }
 
@@ -752,10 +759,10 @@ namespace PicView.ChangeImage
                 return;
             }
 
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, () =>
             {
                 UpdatePic(FolderIndex, preloadValue.bitmapSource);
-            }));
+            });
         }
 
         #endregion Change navigation values

+ 6 - 7
PicView/ChangeTitlebar/EditTitleBar.cs

@@ -1,5 +1,4 @@
 using PicView.FileHandling;
-using System;
 using System.IO;
 using System.Threading.Tasks;
 using System.Windows;
@@ -102,25 +101,25 @@ namespace PicView.UILogic
                     var text = ConfigureWindows.GetMainWindow.TitleText.Text;
                     var width = ConfigureWindows.GetMainWindow.MainImage.Source.Width;
                     var height = ConfigureWindows.GetMainWindow.MainImage.Source.Height;
-                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
                     {
                         Pics[FolderIndex] = text;
                         SetTitle.SetTitleString((int)width, (int)height, FolderIndex);
-                    }));
+                    });
                 }
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
                 {
                     Refocus(false);
-                }));
+                });
 
             }
             else
             {
                 Tooltip.ShowTooltipMessage(Application.Current.Resources["AnErrorOccuredMovingFile"]);
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
                 {
                     Refocus();
-                }));
+                });
             }
         }
 

+ 4 - 9
PicView/ConfigureSettings/UpdateUIValues.cs

@@ -1,15 +1,10 @@
 using PicView.ChangeImage;
-using PicView.FileHandling;
 using PicView.PicGallery;
 using PicView.UILogic;
 using PicView.UILogic.Sizing;
-using System;
-using System.IO;
 using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Controls;
-using static PicView.ChangeImage.Navigation;
-using static PicView.FileHandling.FileLists;
 using static PicView.UILogic.ConfigureWindows;
 using static PicView.UILogic.Tooltip;
 using static PicView.UILogic.TransformImage.Scroll;
@@ -24,8 +19,8 @@ namespace PicView.ConfigureSettings
 
             await Error_Handling.ReloadAsync().ConfigureAwait(false);
 
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
-            {                
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
+            {
                 var sortcm = MainContextMenu.Items[6] as MenuItem;
 
                 var sort0 = sortcm.Items[0] as MenuItem;
@@ -122,7 +117,7 @@ namespace PicView.ConfigureSettings
                         sort6Header.IsChecked = true;
                         break;
                 }
-            }));
+            });
         }
 
         internal static void SetScrolling(object? sender, RoutedEventArgs? e)
@@ -214,7 +209,7 @@ namespace PicView.ConfigureSettings
 
         internal static void SetBorderColorEnabled(object sender, RoutedEventArgs e)
         {
-            bool value = Properties.Settings.Default.WindowBorderColorEnabled ? false : true;
+            bool value = !Properties.Settings.Default.WindowBorderColorEnabled;
             Properties.Settings.Default.WindowBorderColorEnabled = value;
             ConfigColors.UpdateColor(!value);
         }

+ 2 - 3
PicView/Editing/Color_Picking.cs

@@ -1,7 +1,6 @@
 using PicView.UILogic;
 using PicView.UILogic.Loading;
 using PicView.UILogic.TransformImage;
-using System;
 using System.Globalization;
 using System.Threading.Tasks;
 using System.Windows;
@@ -70,11 +69,11 @@ namespace PicView.Editing
                     Clipboard.SetText(x);
                     Tooltip.ShowTooltipMessage(x + " " + Application.Current.Resources["AddedToClipboard"]);
                 }
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
                 {
                     ConfigureWindows.GetMainWindow.topLayer.Children.Remove(UC.GetColorPicker);
                     ConfigureWindows.GetMainWindow.Focus();
-                }));
+                });
             }
 
             IsRunning = false;

+ 4 - 4
PicView/Editing/Crop/CropFunctions.cs

@@ -45,7 +45,7 @@ namespace PicView.Editing.Crop
         internal static async Task PerformCropAsync()
         {
             await SaveCrop().ConfigureAwait(false);
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke((Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(() =>
             {
                 if (Pics.Count == 0)
                 {
@@ -55,7 +55,7 @@ namespace PicView.Editing.Crop
                 {
                     SetTitle.SetTitleString((int)ConfigureWindows.GetMainWindow.MainImage.Source.Width, (int)ConfigureWindows.GetMainWindow.MainImage.Source.Height, FolderIndex);
                 }
-            }));
+            });
             CanNavigate = true;
         }
 
@@ -134,7 +134,7 @@ namespace PicView.Editing.Crop
                         source,
                         Savedlg.FileName)).ConfigureAwait(false);
             }
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke((Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(() =>
             {
                 if (success == false)
                 {
@@ -142,7 +142,7 @@ namespace PicView.Editing.Crop
                 }
 
                 ConfigureWindows.GetMainWindow.ParentContainer.Children.Remove(GetCropppingTool);
-            }));
+            });
         }
 
         internal static Int32Rect GetCrop()

+ 2 - 2
PicView/FileHandling/ArchiveExtraction.cs

@@ -113,10 +113,10 @@ namespace PicView.FileHandling
                 }
                 if (Pics.Count >= 2 && !x.HasExited)
                 {
-                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, (Action)(() =>
+                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, () =>
                     {
                         ConfigureWindows.GetMainWindow.MainImage.Source = Thumbnails.GetBitmapSourceThumb(Pics[0]);
-                    }));
+                    });
                     await Preloader.PreLoad(0).ConfigureAwait(false);
                 }
             };

+ 8 - 5
PicView/FileHandling/Copy-paste.cs

@@ -6,10 +6,7 @@ using System.Linq;
 using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Media.Imaging;
-using static PicView.ChangeImage.Error_Handling;
 using static PicView.ChangeImage.Navigation;
-using static PicView.FileHandling.FileFunctions;
-using static PicView.FileHandling.FileLists;
 using static PicView.UILogic.Tooltip;
 
 namespace PicView.FileHandling
@@ -64,7 +61,7 @@ namespace PicView.FileHandling
 
         internal static void CopyBitmap()
         {
-            BitmapSource pic;
+            BitmapSource? pic;
             if (ConfigureWindows.GetMainWindow.MainImage.Source != null)
             {
                 if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
@@ -76,6 +73,12 @@ namespace PicView.FileHandling
                     pic = (BitmapSource)ConfigureWindows.GetMainWindow.MainImage.Source;
                 }
 
+                if (pic == null)
+                {
+                    ShowTooltipMessage(Application.Current.Resources["UnknownError"]);
+                    return;
+                }
+
                 Clipboard.SetImage(pic);
             }
 
@@ -142,7 +145,7 @@ namespace PicView.FileHandling
             {
                 dropEffect.Write(moveEffect, 0, moveEffect.Length);
 
-                DataObject data = new DataObject();
+                DataObject data = new();
                 data.SetFileDropList(x);
                 data.SetData("Preferred DropEffect", dropEffect);
 

+ 4 - 4
PicView/FileHandling/DeleteFiles.cs

@@ -98,23 +98,23 @@ namespace PicView.FileHandling
             // Sync with preloader
             Preloader.Remove(FolderIndex);
 
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
             {
                 // Sync with gallery
                 if (UC.GetPicGallery != null)
                 {
                     UC.GetPicGallery.Container.Children.RemoveAt(Pics.IndexOf(Pics[FolderIndex]));
                 }
-            }));
+            });
 
             Pics.Remove(Pics[FolderIndex]);
 
             if (Pics.Count <= 0)
             {
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
                 {
                     Unload();
-                }));
+                });
 
                 return;
             }

+ 2 - 4
PicView/FileHandling/Open_Save.cs

@@ -1,7 +1,5 @@
 using Microsoft.Win32;
-using PicView.ChangeImage;
 using PicView.ImageHandling;
-using PicView.PicGallery;
 using PicView.UILogic;
 using PicView.UILogic.Sizing;
 using System;
@@ -102,7 +100,7 @@ namespace PicView.FileHandling
                 return;
             }
 
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
             {
                 if (ScaleImage.XWidth < 1)
                 {
@@ -110,7 +108,7 @@ namespace PicView.FileHandling
                     ConfigureWindows.GetMainWindow.MainImage.Height = ConfigureWindows.GetMainWindow.ParentContainer.ActualHeight;
                 }
                 Close_UserControls();
-            }));
+            });
         }
 
         /// <summary>

+ 8 - 8
PicView/FileHandling/WebFunctions.cs

@@ -23,10 +23,10 @@ namespace PicView.FileHandling
         /// <param name="path"></param>
         internal static async Task PicWeb(string url)
         {
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(DispatcherPriority.Normal, () =>
             {
                 ConfigureWindows.GetMainWindow.TitleText.Text = Application.Current.Resources["Loading"] as string;
-            }));
+            });
 
 
             CanNavigate = false;
@@ -39,25 +39,25 @@ namespace PicView.FileHandling
 
                 await PicAsync(destination, url, isGif).ConfigureAwait(false);
 
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(DispatcherPriority.Normal, () =>
                 {
                     // Fix not having focus after drag and drop
                     if (!ConfigureWindows.GetMainWindow.IsFocused)
                     {
                         ConfigureWindows.GetMainWindow.Focus();
                     }
-                }));
+                });
             }
             catch (Exception e)
             {
 #if DEBUG
                 Trace.WriteLine("PicWeb caught exception, message = " + e.Message);
 #endif
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(async () =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(DispatcherPriority.Normal, async () =>
                 {
                     await ReloadAsync(true).ConfigureAwait(false);
                     ShowTooltipMessage(e.Message, true);
-                }));
+                });
 
                 return;
             }
@@ -83,7 +83,7 @@ namespace PicView.FileHandling
                 {
                     client.ProgressChanged += async (totalFileSize, totalBytesDownloaded, progressPercentage) =>
                     {
-                        await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(DispatcherPriority.Background, (Action)(() =>
+                        await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(DispatcherPriority.Background, () =>
                         {
                             if (totalBytesDownloaded == totalFileSize)
                             {
@@ -101,7 +101,7 @@ namespace PicView.FileHandling
 
                                 ConfigureWindows.GetMainWindow.TitleText.ToolTip = ConfigureWindows.GetMainWindow.Title;
                             }
-                        }));
+                        });
                     };
                 }
 

+ 2 - 2
PicView/ImageHandling/Base64.cs

@@ -53,10 +53,10 @@ namespace PicView.ImageHandling
         internal static async Task<string> ConvertToBase64()
         {
             BitmapFrame? frame = null;
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
             {
                 frame = ImageDecoder.GetRenderedBitmapFrame();
-            }));
+            });
 
             PngBitmapEncoder pngBitmapEncoder = new();
             using var ms = new MemoryStream();

+ 2 - 2
PicView/ImageHandling/GetImageData.cs

@@ -44,10 +44,10 @@ namespace PicView.ImageHandling
             }
             else
             {
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
                 {
                     image = ImageDecoder.GetRenderedBitmapFrame();
-                }));
+                });
             }
 
             if (image == null)

+ 1 - 1
PicView/ImageHandling/ImageFunctions.cs

@@ -14,7 +14,7 @@ namespace PicView.ImageHandling
     {
         internal static async Task<bool> OptimizeImageAsync(string file) => await Task.Run(() =>
         {
-            switch (Path.GetExtension(file).ToUpperInvariant()) 
+            switch (Path.GetExtension(file).ToUpperInvariant())
             {
                 case ".JPG":
                 case ".JPEG":

+ 8 - 8
PicView/PicGallery/GalleryClick.cs

@@ -34,10 +34,10 @@ namespace PicView.PicGallery
                 var size = await ImageHandling.ImageFunctions.ImageSizeAsync(Pics[id]).ConfigureAwait(true);
                 if (size.HasValue)
                 {
-                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
                     {
                         FitImage(size.Value.Width, size.Value.Height);
-                    }));
+                    });
                 }
 
                 var from = GalleryNavigation.PicGalleryItem_Size;
@@ -68,7 +68,7 @@ namespace PicView.PicGallery
 
                 da.Completed += async delegate
                 {
-                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
                     {
                         border.Opacity = 0;
                         GetPicGallery.grid.Children.Remove(border);
@@ -76,11 +76,11 @@ namespace PicView.PicGallery
                         IsOpen = false;
                         GetPicGallery.Visibility = Visibility.Collapsed; // prevent it from popping up again
                         ConfigureWindows.GetMainWindow.MainImage.Visibility = Visibility.Visible;
-                    }));
+                    });
                     await ItemClickAsync(id).ConfigureAwait(false);
                 };
 
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
                 {
                     GetPicGallery.Width = XWidth;
                     GetPicGallery.Height = XHeight;
@@ -105,7 +105,7 @@ namespace PicView.PicGallery
 
                     border.BeginAnimation(FrameworkElement.WidthProperty, da);
                     border.BeginAnimation(FrameworkElement.HeightProperty, da0);
-                }));
+                });
             }
             else
             {
@@ -121,7 +121,7 @@ namespace PicView.PicGallery
             // Change image
             await LoadPicAtIndexAsync(id).ConfigureAwait(false);
 
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
             {
                 if (Properties.Settings.Default.FullscreenGallery == false)
                 {
@@ -135,7 +135,7 @@ namespace PicView.PicGallery
 
                 // Select next item
                 GalleryNavigation.SetSelected(id, true);
-            }));
+            });
         }
     }
 }

+ 1 - 1
PicView/PicGallery/GalleryFunctions.cs

@@ -82,7 +82,7 @@ namespace PicView.PicGallery
                 pics = null;
                 return;
             }
-            
+
 
             for (int i = 0; i < pics.Count; i++)
             {

+ 1 - 3
PicView/PicGallery/GalleryLoad.cs

@@ -1,11 +1,9 @@
 using PicView.ImageHandling;
 using PicView.UILogic;
 using PicView.UILogic.Sizing;
-using System;
 using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Controls;
-using System.Windows.Threading;
 using static PicView.PicGallery.GalleryFunctions;
 using static PicView.UILogic.HideInterfaceLogic;
 
@@ -130,7 +128,7 @@ namespace PicView.PicGallery
                     pic.Freeze();
                 }
 
-                await Add(pic, i).ContinueWith(antecedent => 
+                await Add(pic, i).ContinueWith(antecedent =>
                 {
                     if (ConfigureWindows.GetMainWindow.CheckAccess())
                     {

+ 4 - 4
PicView/PicGallery/GalleryToggle.cs

@@ -77,7 +77,7 @@ namespace PicView.PicGallery
 
             Properties.Settings.Default.FullscreenGallery = false;
 
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
             {
                 GalleryLoad.LoadLayout();
 
@@ -101,7 +101,7 @@ namespace PicView.PicGallery
 
                 GalleryNavigation.SetSelected(FolderIndex, true);
                 GalleryNavigation.ScrollTo();
-            }));
+            });
 
             if (GetPicGallery.Container.Children.Count == 0)
             {
@@ -123,7 +123,7 @@ namespace PicView.PicGallery
 
             Properties.Settings.Default.FullscreenGallery = true;
 
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(async () =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, async () =>
             {
                 GalleryLoad.LoadLayout();
 
@@ -160,7 +160,7 @@ namespace PicView.PicGallery
                 {
                     await GalleryLoad.Load().ConfigureAwait(false);
                 }
-            }));
+            });
         }
 
         #endregion Open

+ 1 - 1
PicView/PicView.csproj

@@ -31,8 +31,8 @@
     <PublishWizardCompleted>true</PublishWizardCompleted>
     <BootstrapperEnabled>true</BootstrapperEnabled>
     <UseWPF>true</UseWPF>
-    <Version>1.3.0.0</Version>
   </PropertyGroup>
+		
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <PlatformTarget>x64</PlatformTarget>
     <DebugSymbols>true</DebugSymbols>

+ 4 - 5
PicView/ProcessHandling/ProcessLogic.cs

@@ -1,20 +1,19 @@
 using PicView.ChangeImage;
 using System.Diagnostics;
 using System.IO;
-using System.Security.Permissions;
 using System.Windows;
 
 namespace PicView.ProcessHandling
 {
     internal static class ProcessLogic
     {
-        internal static string GetPathToProcess()
+        internal static string? GetPathToProcess()
         {
             var GetAppPath = System.Environment.ProcessPath;
 
             if (Path.GetExtension(GetAppPath) == ".dll")
             {
-                GetAppPath = GetAppPath.Replace(".dll", ".exe", System.StringComparison.InvariantCultureIgnoreCase);
+                GetAppPath = GetAppPath?.Replace(".dll", ".exe", System.StringComparison.InvariantCultureIgnoreCase);
             }
             return GetAppPath;
         }
@@ -23,7 +22,7 @@ namespace PicView.ProcessHandling
         {
             Properties.Settings.Default.Save();
 
-            var GetAppPath = ProcessLogic.GetPathToProcess();
+            var GetAppPath = GetPathToProcess();
 
             string args;
             if (Navigation.Pics?.Count > Navigation.FolderIndex)
@@ -45,7 +44,7 @@ namespace PicView.ProcessHandling
 
         internal static void StartProcessWithFileArgument(string argument)
         {
-            var pathToExe = ProcessLogic.GetPathToProcess();
+            var pathToExe = GetPathToProcess();
 
             // Sanitize file name
             var args = argument.Replace(@"\\", @"\");

+ 4 - 2
PicView/Shortcuts/GenericWindowShortcuts.cs

@@ -7,7 +7,7 @@ namespace PicView.Shortcuts
 {
     internal static class GenericWindowShortcuts
     {
-        internal static void KeysDown(ScrollViewer scrollViewer, KeyEventArgs e, Window window)
+        internal static void KeysDown(ScrollViewer? scrollViewer, KeyEventArgs e, Window window)
         {
             switch (e.Key)
             {
@@ -39,8 +39,10 @@ namespace PicView.Shortcuts
             }
         }
 
-        internal static void Window_MouseWheel(ScrollViewer scrollViewer, MouseWheelEventArgs e)
+        internal static void Window_MouseWheel(ScrollViewer? scrollViewer, MouseWheelEventArgs e)
         {
+            if (scrollViewer == null) { return; }
+
             if (e.Delta > 0)
             {
                 scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset - 10);

+ 0 - 1
PicView/SystemIntegration/MonitorSize.cs

@@ -1,5 +1,4 @@
 using System;
-using System.Drawing;
 using System.Windows;
 
 namespace PicView.SystemIntegration

+ 26 - 8
PicView/SystemIntegration/Taskbar.cs

@@ -1,4 +1,7 @@
-using Microsoft.WindowsAPICodePack.Taskbar;
+
+
+using PicView.UILogic;
+using System.Threading.Tasks;
 
 namespace PicView.SystemIntegration
 {
@@ -11,20 +14,35 @@ namespace PicView.SystemIntegration
         /// </summary>
         /// <param name="i">index</param>
         /// <param name="ii">size</param>
-        internal static void Progress(int i, int ii)
+        internal static async Task Progress(double d)
         {
-            TaskbarManager prog = TaskbarManager.Instance;
-            prog.SetProgressState(TaskbarProgressBarState.Normal);
-            prog.SetProgressValue(i, ii);
+            System.Windows.Shell.TaskbarItemInfo taskbar = new()
+            {
+                ProgressState = System.Windows.Shell.TaskbarItemProgressState.Normal,
+                ProgressValue = d
+            };
+            taskbar.Freeze();
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
+            {
+                ConfigureWindows.GetMainWindow.TaskbarItemInfo = taskbar;
+            });
         }
 
         /// <summary>
         /// Stop showing taskbar progress, return to default
         /// </summary>
-        internal static void NoProgress()
+        internal static async Task NoProgress()
         {
-            TaskbarManager prog = TaskbarManager.Instance;
-            prog.SetProgressState(TaskbarProgressBarState.NoProgress);
+            System.Windows.Shell.TaskbarItemInfo taskbar = new()
+            {
+                ProgressState = System.Windows.Shell.TaskbarItemProgressState.Normal,
+                ProgressValue = 0.0
+            };
+            taskbar.Freeze();
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
+            {
+                ConfigureWindows.GetMainWindow.TaskbarItemInfo = taskbar;
+            });
         }
 
         #endregion Progress

+ 8 - 10
PicView/UILogic/DragAndDrop/Image_DragAndDrop.cs

@@ -1,9 +1,7 @@
-using PicView.ChangeImage;
-using PicView.FileHandling;
+using PicView.FileHandling;
 using PicView.ProcessHandling;
 using PicView.Views.UserControls;
 using PicView.Views.UserControls.Misc;
-using System;
 using System.IO;
 using System.Text;
 using System.Threading.Tasks;
@@ -19,7 +17,7 @@ namespace PicView.UILogic.DragAndDrop
         /// <summary>
         /// Backup of image
         /// </summary>
-        private static DragDropOverlay DropOverlay;
+        private static DragDropOverlay? DropOverlay;
 
         /// <summary>
         /// Show image or thumbnail preview on drag enter
@@ -33,7 +31,7 @@ namespace PicView.UILogic.DragAndDrop
                 return;
             }
 
-            UIElement element = null;
+            UIElement? element = null;
 
             if (e.Data.GetData(DataFormats.FileDrop, true) is not string[] files)
             {
@@ -130,10 +128,10 @@ namespace PicView.UILogic.DragAndDrop
                 return;
             }
 
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
             {
                 RemoveDragOverlay();
-            }));
+            });
 
 
             // Load dropped URL
@@ -163,14 +161,14 @@ namespace PicView.UILogic.DragAndDrop
 
             await LoadPicFromString(files[0]).ConfigureAwait(false);
 
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
             {
                 // Don't show drop message any longer
                 CloseToolTipMessage();
 
                 ConfigureWindows.GetMainWindow.Activate();
-            }));
-            
+            });
+
 
             // Open additional windows if multiple files dropped 
             if (files.Length > 0)

+ 2 - 2
PicView/UILogic/Loading/EventsHandling.cs

@@ -41,12 +41,12 @@ namespace PicView.UILogic.Loading
 
             GetFileMenu.Open.Click += async (_, _) => await OpenAsync().ConfigureAwait(false);
             GetFileMenu.FileLocation.Click += (_, _) => Open_In_Explorer();
-            GetFileMenu.Print.Click += (_, _) => Print(Pics[FolderIndex]);
+            GetFileMenu.Print.Click += (_, _) => Print(Pics?[FolderIndex]);
             GetFileMenu.SaveButton.Click += async (sender, e) => await SaveFilesAsync();
 
             GetFileMenu.OpenBorder.MouseLeftButtonUp += async (_, _) => await OpenAsync().ConfigureAwait(false);
             GetFileMenu.FileLocationBorder.MouseLeftButtonUp += (_, _) => Open_In_Explorer();
-            GetFileMenu.PrintBorder.MouseLeftButtonUp += (_, _) => Print(Pics[FolderIndex]);
+            GetFileMenu.PrintBorder.MouseLeftButtonUp += (_, _) => Print(Pics?[FolderIndex]);
             GetFileMenu.SaveBorder.MouseLeftButtonUp += async (sender, e) => await SaveFilesAsync();
 
             // image_button

+ 1 - 1
PicView/UILogic/Loading/LoadContextMenus.cs

@@ -296,7 +296,7 @@ namespace PicView.UILogic.Loading
             };
             settingscmLoop.Header = settingscmLoopHeader;
             settingscmLoop.Click += (_, _) => ConfigureSettings.UpdateUIValues.SetLooping();
-            settingscmLoopHeader.Click += (_, _) => ConfigureSettings.UpdateUIValues.SetLooping(); 
+            settingscmLoopHeader.Click += (_, _) => ConfigureSettings.UpdateUIValues.SetLooping();
             settingscm.Items.Add(settingscmLoop);
 
             ///////////////////////////

+ 10 - 13
PicView/UILogic/Loading/StartLoading.cs

@@ -2,13 +2,10 @@
 using PicView.PicGallery;
 using PicView.SystemIntegration;
 using PicView.Translations;
-using PicView.UILogic.Sizing;
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
-using System.IO;
 using System.Threading.Tasks;
-using System.Timers;
 using System.Windows;
 using System.Windows.Interop;
 using static PicView.ChangeImage.Error_Handling;
@@ -43,23 +40,23 @@ namespace PicView.UILogic.Loading
             await AutoFitWindow().ConfigureAwait(false);
             await SetScrollBehaviour(Properties.Settings.Default.ScrollEnabled).ConfigureAwait(false);
 
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
             {
                 // Set min size to DPI scaling
                 ConfigureWindows.GetMainWindow.MinWidth *= MonitorInfo.DpiScaling;
                 ConfigureWindows.GetMainWindow.MinHeight *= MonitorInfo.DpiScaling;
-            }));
+            });
 
             LoadLanguage.DetermineLanguage();
 
             if (!Properties.Settings.Default.ShowInterface)
             {
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
                 {
                     ConfigureWindows.GetMainWindow.TitleBar.Visibility =
                        ConfigureWindows.GetMainWindow.LowerBar.Visibility
                        = Visibility.Collapsed;
-                }));
+                });
 
             }
 
@@ -67,7 +64,7 @@ namespace PicView.UILogic.Loading
             var args = Environment.GetCommandLineArgs();
             if (args.Length == 1)
             {
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
                 {
                     Unload(); // Load clean setup when starting up without arguments
 
@@ -89,7 +86,7 @@ namespace PicView.UILogic.Loading
                         ConfigureWindows.GetMainWindow.Height = ConfigureWindows.GetMainWindow.MinHeight;
                         ConfigureWindows.CenterWindowOnScreen();
                     }
-                }));
+                });
 
             }
             else
@@ -97,10 +94,10 @@ namespace PicView.UILogic.Loading
                 // Determine prefered UI for startup
                 if (Properties.Settings.Default.Fullscreen)
                 {
-                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
                     {
                         ConfigureWindows.Fullscreen_Restore(true);
-                    }));
+                    });
                 }
                 else if (Properties.Settings.Default.FullscreenGallery)
                 {
@@ -110,10 +107,10 @@ namespace PicView.UILogic.Loading
                 }
                 else if (Properties.Settings.Default.Width > 0 && Properties.Settings.Default.AutoFitWindow == false)
                 {
-                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
                     {
                         SetLastWindowSize();
-                    }));
+                    });
                 }
 
                 await LoadPicFromString(args[1]).ConfigureAwait(false);

+ 6 - 7
PicView/UILogic/Sizing/ScaleImage.cs

@@ -1,5 +1,4 @@
 using PicView.ChangeImage;
-using PicView.FileHandling;
 using PicView.ImageHandling;
 using PicView.UILogic.TransformImage;
 using System;
@@ -53,19 +52,19 @@ namespace PicView.UILogic.Sizing
                         var size = await ImageFunctions.ImageSizeAsync(Pics[FolderIndex]).ConfigureAwait(false);
                         if (size.HasValue)
                         {
-                            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+                            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
                             {
                                 FitImage(size.Value.Width, size.Value.Height);
-                            }));
+                            });
 
                             return true;
                         }
                         else if (GetMainWindow.MainImage.Source != null)
                         {
-                            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+                            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
                             {
                                 FitImage(GetMainWindow.MainImage.Source.Width, GetMainWindow.MainImage.Source.Height);
-                            }));
+                            });
                             return true;
                         }
                         else if (XWidth > 0 && XHeight > 0)
@@ -98,10 +97,10 @@ namespace PicView.UILogic.Sizing
             var size = await ImageFunctions.ImageSizeAsync(source).ConfigureAwait(false);
             if (size.HasValue)
             {
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
                 {
                     FitImage(size.Value.Width, size.Value.Height);
-                }));
+                });
 
                 return true;
             }

+ 1 - 1
PicView/UILogic/Slideshow.cs

@@ -20,7 +20,7 @@ namespace PicView.UILogic
         /// </summary>
         internal static void StartSlideshow()
         {
-            if (Pics.Count == 0)
+            if (Pics?.Count == 0)
             {
                 return;
             }

+ 3 - 4
PicView/UILogic/Timers.cs

@@ -1,5 +1,4 @@
-using System;
-using System.Timers;
+using System.Timers;
 using static PicView.UILogic.Animations.FadeControls;
 using static PicView.UILogic.TransformImage.Scroll;
 
@@ -34,10 +33,10 @@ namespace PicView.UILogic
             };
             timer.Elapsed += async delegate
             {
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
                 {
                     PicGallery.GalleryNavigation.ScrollTo();
-                }));
+                });
             };
         }
     }

+ 4 - 1
PicView/UILogic/Tooltip.cs

@@ -1,6 +1,5 @@
 using PicView.UILogic.Animations;
 using System;
-using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Media.Animation;
 using static PicView.UILogic.UC;
@@ -59,6 +58,10 @@ namespace PicView.UILogic
         /// </summary>
         internal static void CloseToolTipMessage()
         {
+            if (GetToolTipMessage == null)
+            {
+                return;
+            }
             if (GetToolTipMessage.CheckAccess())
             {
                 GetToolTipMessage.Visibility = Visibility.Hidden;

+ 5 - 6
PicView/UILogic/TransformImage/Scroll.cs

@@ -1,5 +1,4 @@
-using System;
-using System.Threading.Tasks;
+using System.Threading.Tasks;
 using System.Timers;
 using System.Windows;
 using System.Windows.Controls;
@@ -37,11 +36,11 @@ namespace PicView.UILogic.TransformImage
         internal static async Task SetScrollBehaviour(bool scrolling)
         {
             Properties.Settings.Default.ScrollEnabled = scrolling;
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, () =>
             {
                 ConfigureWindows.GetMainWindow.Scroller.VerticalScrollBarVisibility =
                     scrolling ? ScrollBarVisibility.Auto : ScrollBarVisibility.Disabled;
-            }));
+            });
 
             // TODO fix error when image is from web
 
@@ -117,7 +116,7 @@ namespace PicView.UILogic.TransformImage
             }
 
             // Start in dispatcher because timer is threaded
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke((Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(() =>
             {
                 if (AutoScrollOrigin.HasValue && AutoScrollPos.HasValue)
                 {
@@ -131,7 +130,7 @@ namespace PicView.UILogic.TransformImage
                             ConfigureWindows.GetMainWindow.Scroller.VerticalOffset + offset);
                     }
                 }
-            }));
+            });
         }
     }
 }

+ 4 - 4
PicView/UILogic/TransformImage/Zoom.cs

@@ -12,8 +12,8 @@ namespace PicView.UILogic.TransformImage
 {
     internal static class ZoomLogic
     {
-        private static ScaleTransform scaleTransform;
-        private static TranslateTransform translateTransform;
+        private static ScaleTransform? scaleTransform;
+        private static TranslateTransform? translateTransform;
         private static Point origin;
         private static Point start;
 
@@ -276,7 +276,7 @@ namespace PicView.UILogic.TransformImage
             {
                 Tooltip.CloseToolTipMessage();
             }
-            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
+            await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, () =>
             {
                 /// Display updated values
                 if (Pics.Count == 0)
@@ -288,7 +288,7 @@ namespace PicView.UILogic.TransformImage
                 {
                     SetTitle.SetTitleString((int)ConfigureWindows.GetMainWindow.MainImage.Source.Width, (int)ConfigureWindows.GetMainWindow.MainImage.Source.Height, FolderIndex);
                 }
-            }));
+            });
         }
 
         private static void BeginZoomAnimation(double zoomValue)

+ 4 - 5
PicView/Views/UserControls/Buttons/GoToPicButton.xaml.cs

@@ -1,6 +1,5 @@
 using PicView.UILogic;
 using PicView.UILogic.Animations;
-using System;
 using System.Globalization;
 using System.Threading.Tasks;
 using System.Windows;
@@ -53,10 +52,10 @@ namespace PicView.Views.UserControls
                 x = x <= 0 ? 0 : x;
                 x = x >= Pics.Count ? Pics.Count - 1 : x;
                 await LoadPicAtIndexAsync(x).ConfigureAwait(false);
-                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke((Action)(() =>
+                await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(() =>
                 {
                     GetImageSettingsMenu.GoToPic.GoToPicBox.Text = (x + 1).ToString(CultureInfo.CurrentCulture);
-                }));
+                });
             }
             else if (Pics.Count > 0 && Pics.Count > FolderIndex)
             {
@@ -123,10 +122,10 @@ namespace PicView.Views.UserControls
 
                 case Key.Enter: // Execute it!
                     await GoToPicEventAsync(sender, e).ConfigureAwait(false);
-                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke((Action)(() =>
+                    await ConfigureWindows.GetMainWindow.Dispatcher.BeginInvoke(() =>
                     {
                         ClearGoTo();
-                    }));
+                    });
 
                     break;
 

+ 0 - 1
PicView/Views/UserControls/Gallery/PicGalleryItem.xaml.cs

@@ -1,7 +1,6 @@
 using PicView.UILogic.Animations;
 using System.Windows.Controls;
 using System.Windows.Media;
-using System.Windows.Media.Imaging;
 using static PicView.PicGallery.GalleryNavigation;
 
 namespace PicView.Views.UserControls

+ 1 - 1
PicView/Views/UserControls/Menus/ToolsAndEffectsMenu.xaml.cs

@@ -129,7 +129,7 @@ namespace PicView.Views.UserControls
                 }
                 else
                 {
-                   Tooltip.ShowTooltipMessage(Application.Current.Resources["UnexpectedError"] as string, true);
+                    Tooltip.ShowTooltipMessage(Application.Current.Resources["UnexpectedError"] as string, true);
                 }
             };
         }

+ 7 - 3
PicView/Views/UserControls/Misc/DragDropOverlay.xaml

@@ -16,12 +16,16 @@
             <ContentPresenter x:Name="ContentHolder" />
 
             <TextBlock
-                Margin="0,15,0,0"
-                FontFamily="/PicView;component/Themes/Resources/fonts/#Roboto Medium"
+                Margin="0,10,0,0"
+                FontFamily="Roboto Black"
                 FontSize="15"
                 Foreground="#fff"
                 Text="{StaticResource DragOverString}"
-                TextAlignment="Center" />
+                TextAlignment="Center">
+                <TextBlock.Effect>
+                    <DropShadowEffect ShadowDepth="1" Direction="358" Color="Black" Opacity="0.6" BlurRadius="1"/>
+                </TextBlock.Effect>
+            </TextBlock>
         </StackPanel>
     </Grid>
 </UserControl>

+ 2 - 2
PicView/Views/UserControls/Misc/FolderIcon.xaml

@@ -130,7 +130,7 @@
             Data="M0 108.665L179.006 108.665L179.836 0L163.103 31.8476L146.793 18.4836L127.016 67.5762L116.033 57.0758L102.924 67.5762L87.2431 25.7177L69.8974 63.9205L57.0857 57.1538L40.776 77.5022L16.3103 73.4292L0 108.665"
             Stretch="Fill">
             <Path.Fill>
-                <SolidColorBrush Opacity=".9" Color="{DynamicResource ChosenColor}" />
+                <SolidColorBrush Opacity=".9" Color="#FFFF802A" />
             </Path.Fill>
         </Path>
         <Path
@@ -140,7 +140,7 @@
             Height="108.67"
             Clip="{StaticResource Mask6}"
             Data="M0.654786 24.496L0 108.665L12.6941 108.665L13.5247 0L0.654786 24.496Z"
-            Fill="{DynamicResource ChosenColorBrush}"
+            Fill="#FF802A"
             Stretch="Fill" />
         <Path
             Canvas.Top="29.4"

+ 78 - 79
PicView/Views/Windows/EffectsWindows.xaml.cs

@@ -1,5 +1,4 @@
-using Microsoft.Windows.Themes;
-using PicView.Editing.HlslEffects;
+using PicView.Editing.HlslEffects;
 using PicView.FileHandling;
 using PicView.UILogic;
 using PicView.UILogic.Animations;
@@ -40,137 +39,137 @@ namespace PicView.Views.Windows
 
             #region button events
 
-            NegativeButton.Click += Negative;
+            NegativeButton.Click += (_, _) => Negative();
             NegativeButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(NegativeColorsText); };
             NegativeButton.MouseEnter += delegate { ButtonMouseOverAnim(NegativeColorsText); AnimationHelper.MouseEnterBgTexColor(NegativeButtonBrush); };
             NegativeButton.MouseLeave += delegate { ButtonMouseLeaveAnim(NegativeColorsText); AnimationHelper.MouseLeaveBgTexColor(NegativeButtonBrush); };
 
-            GrayscaleButton.Click += GraySceale;
+            GrayscaleButton.Click += (_, _) => GraySceale();
             GrayscaleButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(GrayscaleText); };
             GrayscaleButton.MouseEnter += delegate { ButtonMouseOverAnim(GrayscaleText); AnimationHelper.MouseEnterBgTexColor(GrayscaleButtonBrush); };
             GrayscaleButton.MouseLeave += delegate { ButtonMouseLeaveAnim(GrayscaleText); AnimationHelper.MouseLeaveBgTexColor(GrayscaleButtonBrush); };
 
-            ColorToneButton.Click += ColorToneEffect;
+            ColorToneButton.Click += (_, _) => ColorToneEffect();
             ColorToneButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(ColorToneText); };
             ColorToneButton.MouseEnter += delegate { ButtonMouseOverAnim(ColorToneText); AnimationHelper.MouseEnterBgTexColor(ColorToneButtonBrush); };
             ColorToneButton.MouseLeave += delegate { ButtonMouseLeaveAnim(ColorToneText); AnimationHelper.MouseLeaveBgTexColor(ColorToneButtonBrush); };
 
-            OldMovieButton.Click += OldMovieEffect;
+            OldMovieButton.Click += (_, _) => OldMovieEffect();
             OldMovieButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(OldMovieText); };
             OldMovieButton.MouseEnter += delegate { ButtonMouseOverAnim(OldMovieText); AnimationHelper.MouseEnterBgTexColor(OldMovieButtonBrush); };
             OldMovieButton.MouseLeave += delegate { ButtonMouseLeaveAnim(OldMovieText); AnimationHelper.MouseLeaveBgTexColor(OldMovieButtonBrush); };
 
-            BloomButton.Click += Bloom;
+            BloomButton.Click += (_, _) => Bloom();
             BloomButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(BloomText); };
             BloomButton.MouseEnter += delegate { ButtonMouseOverAnim(BloomText); AnimationHelper.MouseEnterBgTexColor(BloomButtonBrush); };
             BloomButton.MouseLeave += delegate { ButtonMouseLeaveAnim(BloomText); AnimationHelper.MouseLeaveBgTexColor(BloomButtonBrush); };
 
-            GloomButton.Click += Gloom;
+            GloomButton.Click += (_, _) => Gloom();
             GloomButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(GloomText); };
             GloomButton.MouseEnter += delegate { ButtonMouseOverAnim(GloomText); AnimationHelper.MouseEnterBgTexColor(GloomButtonBrush); };
             GloomButton.MouseLeave += delegate { ButtonMouseLeaveAnim(GloomText); AnimationHelper.MouseLeaveBgTexColor(GloomButtonBrush); };
 
-            MonochromeButton.Click += Monochrome;
+            MonochromeButton.Click += (_, _) => Monochrome();
             MonochromeButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(MonochromeText); };
             MonochromeButton.MouseEnter += delegate { ButtonMouseOverAnim(MonochromeText); AnimationHelper.MouseEnterBgTexColor(MonochromeButtonBrush); };
             MonochromeButton.MouseLeave += delegate { ButtonMouseLeaveAnim(MonochromeText); AnimationHelper.MouseLeaveBgTexColor(MonochromeButtonBrush); };
 
-            WavewarperButton.Click += WaveWarperEffect;
+            WavewarperButton.Click += (_, _) => WaveWarperEffect();
             WavewarperButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(WaveWarperText); };
             WavewarperButton.MouseEnter += delegate { ButtonMouseOverAnim(WaveWarperText); AnimationHelper.MouseEnterBgTexColor(WaveWarperButtonBrush); };
             WavewarperButton.MouseLeave += delegate { ButtonMouseLeaveAnim(WaveWarperText); AnimationHelper.MouseLeaveBgTexColor(WaveWarperButtonBrush); };
 
-            UnderwaterButton.Click += UnderWaterEffect;
+            UnderwaterButton.Click += (_, _) => UnderWaterEffect();
             UnderwaterButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(UnderwaterText); };
             UnderwaterButton.MouseEnter += delegate { ButtonMouseOverAnim(UnderwaterText); AnimationHelper.MouseEnterBgTexColor(UnderwaterButtonBrush); };
             UnderwaterButton.MouseLeave += delegate { ButtonMouseLeaveAnim(UnderwaterText); AnimationHelper.MouseLeaveBgTexColor(UnderwaterButtonBrush); };
 
-            BandedSwirlButton.Click += BandedSwirlEffect;
+            BandedSwirlButton.Click += (_, _) => BandedSwirlEffect();
             BandedSwirlButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(BandedSwirlText); };
             BandedSwirlButton.MouseEnter += delegate { ButtonMouseOverAnim(BandedSwirlText); AnimationHelper.MouseEnterBgTexColor(BandedSwirlButtonBrush); };
             BandedSwirlButton.MouseLeave += delegate { ButtonMouseLeaveAnim(BandedSwirlText); AnimationHelper.MouseLeaveBgTexColor(BandedSwirlButtonBrush); };
 
-            SwirlButton.Click += SwirlEffect;
+            SwirlButton.Click += (_, _) => SwirlEffect();
             SwirlButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(SwirlText); };
             SwirlButton.MouseEnter += delegate { ButtonMouseOverAnim(SwirlText); AnimationHelper.MouseEnterBgTexColor(SwirlButtonBrush); };
             SwirlButton.MouseLeave += delegate { ButtonMouseLeaveAnim(SwirlText); AnimationHelper.MouseLeaveBgTexColor(SwirlButtonBrush); };
 
-            RippleButton.Click += RippleEffect1;
+            RippleButton.Click += (_, _) => RippleEffect1();
             RippleButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(RippleText); };
             RippleButton.MouseEnter += delegate { ButtonMouseOverAnim(RippleText); AnimationHelper.MouseEnterBgTexColor(RippleButtonBrush); };
             RippleButton.MouseLeave += delegate { ButtonMouseLeaveAnim(RippleText); AnimationHelper.MouseLeaveBgTexColor(RippleButtonBrush); };
 
-            RippleAltButton.Click += RippleEffect2;
+            RippleAltButton.Click += (_, _) => RippleEffect2();
             RippleAltButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(RippleAltText); };
             RippleAltButton.MouseEnter += delegate { ButtonMouseOverAnim(RippleAltText); AnimationHelper.MouseEnterBgTexColor(RippleAltButtonBrush); };
             RippleAltButton.MouseLeave += delegate { ButtonMouseLeaveAnim(RippleAltText); AnimationHelper.MouseLeaveBgTexColor(RippleAltButtonBrush); };
 
-            BlurButton.Click += BlurEffect;
+            BlurButton.Click += (_, _) => BlurEffect();
             BlurButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(BlurText); };
             BlurButton.MouseEnter += delegate { ButtonMouseOverAnim(BlurText); AnimationHelper.MouseEnterBgTexColor(BlurButtonBrush); };
             BlurButton.MouseLeave += delegate { ButtonMouseLeaveAnim(BlurText); AnimationHelper.MouseLeaveBgTexColor(BlurButtonBrush); };
 
-            DirectionalBlurButton.Click += Dir_blur;
+            DirectionalBlurButton.Click += (_, _) => Dir_blur();
             DirectionalBlurButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(DirectionalBlurText); };
             DirectionalBlurButton.MouseEnter += delegate { ButtonMouseOverAnim(DirectionalBlurText); AnimationHelper.MouseEnterBgTexColor(DirectionalBlurButtonBrush); };
             DirectionalBlurButton.MouseLeave += delegate { ButtonMouseLeaveAnim(DirectionalBlurText); AnimationHelper.MouseLeaveBgTexColor(DirectionalBlurButtonBrush); };
 
-            TelescopicBlurButton.Click += Teleskopisk_blur;
+            TelescopicBlurButton.Click += (_, _) => Teleskopisk_blur();
             TelescopicBlurButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(TelescopicBlurText); };
             TelescopicBlurButton.MouseEnter += delegate { ButtonMouseOverAnim(TelescopicBlurText); AnimationHelper.MouseEnterBgTexColor(TelescopicBlurButtonBrush); };
             TelescopicBlurButton.MouseLeave += delegate { ButtonMouseLeaveAnim(TelescopicBlurText); AnimationHelper.MouseLeaveBgTexColor(TelescopicBlurButtonBrush); };
 
-            PixelateButton.Click += PixelateEffect;
+            PixelateButton.Click += (_, _) => PixelateEffect();
             PixelateButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(PixelateText); };
             PixelateButton.MouseEnter += delegate { ButtonMouseOverAnim(PixelateText); AnimationHelper.MouseEnterBgTexColor(PixelateButtonBrush); };
             PixelateButton.MouseLeave += delegate { ButtonMouseLeaveAnim(PixelateText); AnimationHelper.MouseLeaveBgTexColor(PixelateButtonBrush); };
 
-            EmbossedButton.Click += Embossed;
+            EmbossedButton.Click += (_, _) => Embossed();
             EmbossedButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(EmbossedText); };
             EmbossedButton.MouseEnter += delegate { ButtonMouseOverAnim(EmbossedText); AnimationHelper.MouseEnterBgTexColor(EmbossedButtonBrush); };
             EmbossedButton.MouseLeave += delegate { ButtonMouseLeaveAnim(EmbossedText); AnimationHelper.MouseLeaveBgTexColor(EmbossedButtonBrush); };
 
-            SmoothMagnifyButton.Click += MagnifySmoothEffect;
+            SmoothMagnifyButton.Click += (_, _) => MagnifySmoothEffect();
             SmoothMagnifyButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(SmoothMagnifyText); };
             SmoothMagnifyButton.MouseEnter += delegate { ButtonMouseOverAnim(SmoothMagnifyText); AnimationHelper.MouseEnterBgTexColor(SmoothMagnifyButtonBrush); };
             SmoothMagnifyButton.MouseLeave += delegate { ButtonMouseLeaveAnim(SmoothMagnifyText); AnimationHelper.MouseLeaveBgTexColor(SmoothMagnifyButtonBrush); };
 
-            PivotButton.Click += PivotEffect;
+            PivotButton.Click += (_, _) => PivotEffect();
             PivotButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(PivotText); };
             PivotButton.MouseEnter += delegate { ButtonMouseOverAnim(PivotText); AnimationHelper.MouseEnterBgTexColor(PivotButtonBrush); };
             PivotButton.MouseLeave += delegate { ButtonMouseLeaveAnim(PivotText); AnimationHelper.MouseLeaveBgTexColor(PivotButtonBrush); };
 
-            PaperfoldButton.Click += PaperFoldEffect;
+            PaperfoldButton.Click += (_, _) => PaperFoldEffect();
             PaperfoldButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(PaperFoldText); };
             PaperfoldButton.MouseEnter += delegate { ButtonMouseOverAnim(PaperFoldText); AnimationHelper.MouseEnterBgTexColor(PaperfoldButtonBrush); };
             PaperfoldButton.MouseLeave += delegate { ButtonMouseLeaveAnim(PaperFoldText); AnimationHelper.MouseLeaveBgTexColor(PaperfoldButtonBrush); };
 
-            PencilSketchButton.Click += SketchPencilStrokeEffect;
+            PencilSketchButton.Click += (_, _) => SketchPencilStrokeEffect();
             PencilSketchButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(PencilSketchText); };
             PencilSketchButton.MouseEnter += delegate { ButtonMouseOverAnim(PencilSketchText); AnimationHelper.MouseEnterBgTexColor(PencilSketchButtonBrush); };
             PencilSketchButton.MouseLeave += delegate { ButtonMouseLeaveAnim(PencilSketchText); AnimationHelper.MouseLeaveBgTexColor(PencilSketchButtonBrush); };
 
-            SketchButton.Click += Sketch;
+            SketchButton.Click += (_, _) => Sketch();
             SketchButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(SketchText); };
             SketchButton.MouseEnter += delegate { ButtonMouseOverAnim(SketchText); AnimationHelper.MouseEnterBgTexColor(SketchButtonBrush); };
             SketchButton.MouseLeave += delegate { ButtonMouseLeaveAnim(SketchText); AnimationHelper.MouseLeaveBgTexColor(SketchButtonBrush); };
 
-            TonemappingButton.Click += ToneMapping;
+            TonemappingButton.Click += (_, _) => ToneMapping();
             TonemappingButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(ToneMappingText); };
             TonemappingButton.MouseEnter += delegate { ButtonMouseOverAnim(ToneMappingText); AnimationHelper.MouseEnterBgTexColor(ToneMappingButtonBrush); };
             TonemappingButton.MouseLeave += delegate { ButtonMouseLeaveAnim(ToneMappingText); AnimationHelper.MouseLeaveBgTexColor(ToneMappingButtonBrush); };
 
-            BandsButton.Click += Bands;
+            BandsButton.Click += (_, _) => Bands();
             BandsButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(BandsText); };
             BandsButton.MouseEnter += delegate { ButtonMouseOverAnim(BandsText); AnimationHelper.MouseEnterBgTexColor(BandsButtonBrush); };
             BandsButton.MouseLeave += delegate { ButtonMouseLeaveAnim(BandsText); AnimationHelper.MouseLeaveBgTexColor(BandsButtonBrush); };
 
-            GlasTileButton.Click += GlasTileEffect;
+            GlasTileButton.Click += (_, _) => GlasTileEffect();
             GlasTileButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(GlassTileText); };
             GlasTileButton.MouseEnter += delegate { ButtonMouseOverAnim(GlassTileText); AnimationHelper.MouseEnterBgTexColor(GlasTileButtonBrush); };
             GlasTileButton.MouseLeave += delegate { ButtonMouseLeaveAnim(GlassTileText); AnimationHelper.MouseLeaveBgTexColor(GlasTileButtonBrush); };
 
-            FrostyOutlineButton.Click += FrostyOutlineEffect;
+            FrostyOutlineButton.Click += (_, _) => FrostyOutlineEffect();
             FrostyOutlineButton.PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(FrostyOutlineText); };
             FrostyOutlineButton.MouseEnter += delegate { ButtonMouseOverAnim(FrostyOutlineText); AnimationHelper.MouseEnterBgTexColor(FrostyOutlineButtonBrush); };
             FrostyOutlineButton.MouseLeave += delegate { ButtonMouseLeaveAnim(FrostyOutlineText); AnimationHelper.MouseLeaveBgTexColor(FrostyOutlineButtonBrush); };
@@ -188,91 +187,91 @@ namespace PicView.Views.Windows
         {
             if (PixelateButton.IsChecked.HasValue && PixelateButton.IsChecked.Value)
             {
-                PixelateEffect(null, null);
+                PixelateEffect();
             }
             else if (ColorToneButton.IsChecked.HasValue && ColorToneButton.IsChecked.Value)
             {
-                ColorToneEffect(null, null);
+                ColorToneEffect();
             }
             else if (RippleAltButton.IsChecked.HasValue && RippleAltButton.IsChecked.Value)
             {
-                RippleEffect2(null, null);
+                RippleEffect2();
             }
             else if (BandedSwirlButton.IsChecked.HasValue && BandedSwirlButton.IsChecked.Value)
             {
-                BandedSwirlEffect(null, null);
+                BandedSwirlEffect();
             }
             else if (DirectionalBlurButton.IsChecked.HasValue && DirectionalBlurButton.IsChecked.Value)
             {
-                Dir_blur(null, null);
+                Dir_blur();
             }
             else if (BandsButton.IsChecked.HasValue && BandsButton.IsChecked.Value)
             {
-                Bands(null, null);
+                Bands();
             }
             else if (EmbossedButton.IsChecked.HasValue && EmbossedButton.IsChecked.Value)
             {
-                Embossed(null, null);
+                Embossed();
             }
             else if (GlasTileButton.IsChecked.HasValue && GlasTileButton.IsChecked.Value)
             {
-                GlasTileEffect(null, null);
+                GlasTileEffect();
             }
             else if (SmoothMagnifyButton.IsChecked.HasValue && SmoothMagnifyButton.IsChecked.Value)
             {
-                MagnifySmoothEffect(null, null);
+                MagnifySmoothEffect();
             }
             else if (PaperfoldButton.IsChecked.HasValue && PaperfoldButton.IsChecked.Value)
             {
-                PaperFoldEffect(null, null);
+                PaperFoldEffect();
             }
             else if (PivotButton.IsChecked.HasValue && PivotButton.IsChecked.Value)
             {
-                PivotEffect(null, null);
+                PivotEffect();
             }
             else if (UnderwaterButton.IsChecked.HasValue && UnderwaterButton.IsChecked.Value)
             {
-                UnderWaterEffect(null, null);
+                UnderWaterEffect();
             }
             else if (WavewarperButton.IsChecked.HasValue && WavewarperButton.IsChecked.Value)
             {
-                WaveWarperEffect(null, null);
+                WaveWarperEffect();
             }
             else if (FrostyOutlineButton.IsChecked.HasValue && FrostyOutlineButton.IsChecked.Value)
             {
-                FrostyOutlineEffect(null, null);
+                FrostyOutlineEffect();
             }
             else if (OldMovieButton.IsChecked.HasValue && OldMovieButton.IsChecked.Value)
             {
-                OldMovieEffect(null, null);
+                OldMovieEffect();
             }
             else if (SketchButton.IsChecked.HasValue && SketchButton.IsChecked.Value)
             {
-                Sketch(null, null);
+                Sketch();
             }
             else if (SwirlButton.IsChecked.HasValue && SwirlButton.IsChecked.Value)
             {
-                SwirlEffect(null, null);
+                SwirlEffect();
             }
             else if (BloomButton.IsChecked.HasValue && BloomButton.IsChecked.Value)
             {
-                Bloom(null, null);
+                Bloom();
             }
             else if (GloomButton.IsChecked.HasValue && GloomButton.IsChecked.Value)
             {
-                Gloom(null, null);
+                Gloom();
             }
             else if (TonemappingButton.IsChecked.HasValue && TonemappingButton.IsChecked.Value)
             {
-                ToneMapping(null, null);
+                ToneMapping();
             }
             else if (TelescopicBlurButton.IsChecked.HasValue && TelescopicBlurButton.IsChecked.Value)
             {
-                Teleskopisk_blur(null, null);
+                Teleskopisk_blur();
             }
             else if (PencilSketchButton.IsChecked.HasValue && PencilSketchButton.IsChecked.Value)
             {
-                SketchPencilStrokeEffect(null, null);
+                SketchPencilStrokeEffect();
             }
 
         }
@@ -301,7 +300,7 @@ namespace PicView.Views.Windows
             }
         }
 
-        private void Negative(object? sender, RoutedEventArgs? e)
+        private void Negative()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -315,7 +314,7 @@ namespace PicView.Views.Windows
             NegativeButton.IsChecked = true;
         }
 
-        private void GraySceale(object? sender, RoutedEventArgs? e)
+        private void GraySceale()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -329,7 +328,7 @@ namespace PicView.Views.Windows
             GrayscaleButton.IsChecked = true;
         }
 
-        private void ColorToneEffect(object? sender, RoutedEventArgs? e)
+        private void ColorToneEffect()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -343,7 +342,7 @@ namespace PicView.Views.Windows
             ColorToneButton.IsChecked = true;
         }
 
-        private void RippleEffect1(object? sender, RoutedEventArgs? e)
+        private void RippleEffect1()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -357,7 +356,7 @@ namespace PicView.Views.Windows
             RippleButton.IsChecked = true;
         }
 
-        private void RippleEffect2(object? sender, RoutedEventArgs? e)
+        private void RippleEffect2()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -371,7 +370,7 @@ namespace PicView.Views.Windows
             RippleAltButton.IsChecked = true;
         }
 
-        private void BandedSwirlEffect(object? sender, RoutedEventArgs? e)
+        private void BandedSwirlEffect()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -385,7 +384,7 @@ namespace PicView.Views.Windows
             BandedSwirlButton.IsChecked = true;
         }
 
-        private void Monochrome(object? sender, RoutedEventArgs? e)
+        private void Monochrome()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -399,7 +398,7 @@ namespace PicView.Views.Windows
             MonochromeButton.IsChecked = true;
         }
 
-        private void SwirlEffect(object? sender, RoutedEventArgs? e)
+        private void SwirlEffect()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -413,7 +412,7 @@ namespace PicView.Views.Windows
             SwirlButton.IsChecked = true;
         }
 
-        private void Bloom(object? sender, RoutedEventArgs? e)
+        private void Bloom()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -427,7 +426,7 @@ namespace PicView.Views.Windows
             BloomButton.IsChecked = true;
         }
 
-        private void Gloom(object? sender, RoutedEventArgs? e)
+        private void Gloom()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -441,7 +440,7 @@ namespace PicView.Views.Windows
             GloomButton.IsChecked = true;
         }
 
-        private void ToneMapping(object? sender, RoutedEventArgs? e)
+        private void ToneMapping()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -455,7 +454,7 @@ namespace PicView.Views.Windows
             TonemappingButton.IsChecked = true;
         }
 
-        private void Teleskopisk_blur(object? sender, RoutedEventArgs? e)
+        private void Teleskopisk_blur()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -469,7 +468,7 @@ namespace PicView.Views.Windows
             TelescopicBlurButton.IsChecked = true;
         }
 
-        private void BlurEffect(object? sender, RoutedEventArgs? e)
+        private void BlurEffect()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -483,7 +482,7 @@ namespace PicView.Views.Windows
             BlurButton.IsChecked = true;
         }
 
-        private void Dir_blur(object? sender, RoutedEventArgs? e)
+        private void Dir_blur()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -497,7 +496,7 @@ namespace PicView.Views.Windows
             DirectionalBlurButton.IsChecked = true;
         }
 
-        private void Bands(object? sender, RoutedEventArgs? e)
+        private void Bands()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -511,7 +510,7 @@ namespace PicView.Views.Windows
             BandsButton.IsChecked = true;
         }
 
-        private void Embossed(object? sender, RoutedEventArgs? e)
+        private void Embossed()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -525,7 +524,7 @@ namespace PicView.Views.Windows
             EmbossedButton.IsChecked = true;
         }
 
-        private void GlasTileEffect(object? sender, RoutedEventArgs? e)
+        private void GlasTileEffect()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -539,7 +538,7 @@ namespace PicView.Views.Windows
             GlasTileButton.IsChecked = true;
         }
 
-        private void MagnifySmoothEffect(object? sender, RoutedEventArgs? e)
+        private void MagnifySmoothEffect()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -553,7 +552,7 @@ namespace PicView.Views.Windows
             SmoothMagnifyButton.IsChecked = true;
         }
 
-        private void PaperFoldEffect(object? sender, RoutedEventArgs? e)
+        private void PaperFoldEffect()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -567,7 +566,7 @@ namespace PicView.Views.Windows
             PaperfoldButton.IsChecked = true;
         }
 
-        private void PivotEffect(object? sender, RoutedEventArgs? e)
+        private void PivotEffect()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -581,7 +580,7 @@ namespace PicView.Views.Windows
             PivotButton.IsChecked = true;
         }
 
-        private void UnderWaterEffect(object? sender, RoutedEventArgs? e)
+        private void UnderWaterEffect()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -595,7 +594,7 @@ namespace PicView.Views.Windows
             UnderwaterButton.IsChecked = true;
         }
 
-        private void WaveWarperEffect(object? sender, RoutedEventArgs? e)
+        private void WaveWarperEffect()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -609,7 +608,7 @@ namespace PicView.Views.Windows
             WavewarperButton.IsChecked = true;
         }
 
-        private void FrostyOutlineEffect(object? sender, RoutedEventArgs? e)
+        private void FrostyOutlineEffect()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -623,7 +622,7 @@ namespace PicView.Views.Windows
             FrostyOutlineButton.IsChecked = true;
         }
 
-        private void OldMovieEffect(object? sender, RoutedEventArgs? e)
+        private void OldMovieEffect()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -637,7 +636,7 @@ namespace PicView.Views.Windows
             OldMovieButton.IsChecked = true;
         }
 
-        private void PixelateEffect(object? sender, RoutedEventArgs? e)
+        private void PixelateEffect()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -646,12 +645,12 @@ namespace PicView.Views.Windows
                     return;
                 }
             }
-            
+
             ConfigureWindows.GetMainWindow.MainImage.Effect = new PixelateEffect(IntensitySlider.Value);
             PixelateButton.IsChecked = true;
         }
 
-        private void Sketch(object? sender, RoutedEventArgs? e)
+        private void Sketch()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {
@@ -665,7 +664,7 @@ namespace PicView.Views.Windows
             SketchButton.IsChecked = true;
         }
 
-        private void SketchPencilStrokeEffect(object? sender, RoutedEventArgs? e)
+        private void SketchPencilStrokeEffect()
         {
             if (ConfigureWindows.GetMainWindow.MainImage.Effect != null)
             {

+ 2 - 2
PicView/Views/Windows/ImageInfoWindow.xaml.cs

@@ -153,7 +153,7 @@ namespace PicView.Views.Windows
         {
             var data = await Task.Run(async () => (await GetImageData.RetrieveDataAsync(file).ConfigureAwait(false)));
 
-            await ConfigureWindows.GetImageInfoWindow.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() =>
+            await ConfigureWindows.GetImageInfoWindow.Dispatcher.BeginInvoke(DispatcherPriority.Normal, () =>
             {
                 if (data != null)
                 {
@@ -209,7 +209,7 @@ namespace PicView.Views.Windows
                     AspectRatioBox.Text = string.Empty;
                 }
 
-            }));
+            });
         }
     }
 }

+ 27 - 26
PicView/Views/Windows/InfoWindow.xaml

@@ -68,7 +68,7 @@
             <TextBlock
                 x:Name="Bar"
                 Height="30"
-                Padding="0,8.4,0,0"
+                Padding="0,5,0,0"
                 VerticalAlignment="Center"
                 Background="{StaticResource BackgroundSubtleHighlightBrush}"
                 FontSize="16"
@@ -91,15 +91,15 @@
             HorizontalScrollBarVisibility="Disabled"
             VerticalScrollBarVisibility="Auto">
 
-            <StackPanel Margin="15,0,20,0">
+            <StackPanel Margin="7,0,7,0">
 
                 <Label
-                    Margin="1,22,0,11"
+                    Margin="0,12,0,4"
                     HorizontalAlignment="Center"
                     d:Content="Application Shortcuts"
                     Content="{StaticResource ResourceKey=ApplicationShortcuts}"
-                    FontFamily="/PicView;component/Themes/Resources/fonts/#Roboto Bold"
-                    FontSize="12" />
+                    FontFamily="/PicView;component/Themes/Resources/fonts/#Roboto Black"
+                    FontSize="16" />
 
                 <Label
                     Width="480"
@@ -110,7 +110,7 @@
                 <Grid Width="480" Margin="0,0,0,20">
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="1*" />
-                        <ColumnDefinition Width="145" />
+                        <ColumnDefinition Width="130" />
                         <ColumnDefinition Width="170" />
                     </Grid.ColumnDefinitions>
                     <Grid.RowDefinitions>
@@ -383,7 +383,7 @@
                 <Grid Width="480" Margin="0,0,0,20">
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="1*" />
-                        <ColumnDefinition Width="145" />
+                        <ColumnDefinition Width="130" />
                         <ColumnDefinition Width="170" />
                     </Grid.ColumnDefinitions>
                     <Grid.RowDefinitions>
@@ -510,7 +510,7 @@
                 <Grid Width="480" Margin="0,0,0,16">
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="1*" />
-                        <ColumnDefinition Width="145" />
+                        <ColumnDefinition Width="130" />
                         <ColumnDefinition Width="170" />
                     </Grid.ColumnDefinitions>
                     <Grid.RowDefinitions>
@@ -735,7 +735,7 @@
                 <Grid Width="480" Margin="0,0,0,20">
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="1*" />
-                        <ColumnDefinition Width="145" />
+                        <ColumnDefinition Width="130" />
                         <ColumnDefinition Width="170" />
                     </Grid.ColumnDefinitions>
                     <Grid.RowDefinitions>
@@ -923,7 +923,7 @@
                 <Grid Width="480" Margin="0,0,0,20">
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="1*" />
-                        <ColumnDefinition Width="145" />
+                        <ColumnDefinition Width="130" />
                         <ColumnDefinition Width="170" />
                     </Grid.ColumnDefinitions>
                     <Grid.RowDefinitions>
@@ -1034,9 +1034,7 @@
                         BorderBrush="{StaticResource BorderBrush}"
                         BorderThickness="1,1,1,1">
                         <TextBlock
-                            MaxWidth="155"
                             Margin="10,3,0,3"
-                            d:Text="Toggle fullscreen"
                             FontSize="12"
                             Text="{StaticResource ResourceKey=ToggleFullscreen}"
                             TextWrapping="Wrap" />
@@ -1091,7 +1089,6 @@
                         BorderThickness="1,0,1,1">
                         <TextBlock
                             Margin="10,3,0,3"
-                            d:Text="Slideshow"
                             FontSize="12"
                             Text="{StaticResource ResourceKey=Slideshow}" />
                     </Border>
@@ -1128,7 +1125,7 @@
                 <Grid Width="480" Margin="0,0,0,20">
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="1*" />
-                        <ColumnDefinition Width="145" />
+                        <ColumnDefinition Width="130" />
                         <ColumnDefinition Width="170" />
                     </Grid.ColumnDefinitions>
                     <Grid.RowDefinitions>
@@ -1575,7 +1572,7 @@
                 <Grid Width="480" Margin="0,0,0,20">
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="1*" />
-                        <ColumnDefinition Width="145" />
+                        <ColumnDefinition Width="130" />
                         <ColumnDefinition Width="170" />
                     </Grid.ColumnDefinitions>
                     <Grid.RowDefinitions>
@@ -1856,7 +1853,7 @@
                 <Grid Width="480" Margin="0,0,0,16">
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="1*" />
-                        <ColumnDefinition Width="145" />
+                        <ColumnDefinition Width="130" />
                         <ColumnDefinition Width="170" />
                     </Grid.ColumnDefinitions>
                     <Grid.RowDefinitions>
@@ -2021,17 +2018,21 @@
 
                 <StackPanel Margin="0,28,0,7">
 
-                    <Label HorizontalAlignment="Center" Content="{StaticResource ResourceKey=Credits}" />
+                    <Label 
+                        FontSize="16"
+                        FontFamily="/PicView;component/Themes/Resources/fonts/#Roboto Black"
+                        HorizontalAlignment="Center"
+                        Content="{StaticResource ResourceKey=Credits}" />
 
                     <Label
                         Margin="0,0,0,3"
+                        FontFamily="/PicView;component/Themes/Resources/fonts/#Roboto Black"
                         HorizontalAlignment="Center"
-                        d:Content="Icons used:"
                         Content="{StaticResource ResourceKey=IconsUsed}" />
 
                     <TextBlock
                         Margin="0,0,0,2"
-                        FontSize="12"
+                        FontSize="14"
                         TextAlignment="Center"
                         ToolTip="https://useiconic.com/open/">
                         <Hyperlink
@@ -2049,11 +2050,11 @@
                     <TextBlock
                         x:Name="Ionic"
                         Margin="0,0,0,2"
-                        FontSize="12"
+                        FontSize="14"
                         TextAlignment="Center"
                         ToolTip="http://Ionicons.com/">
                         <Hyperlink NavigateUri="http://Ionicons.com/" RequestNavigate="Hyperlink_RequestNavigate">
-                            Ioinicons
+                                   Ioinicons
                             <Hyperlink.Foreground>
                                 <SolidColorBrush x:Name="IonicBrush" Color="{StaticResource MainColor}" />
                             </Hyperlink.Foreground>
@@ -2065,7 +2066,7 @@
                             <TextBlock
                                 x:Name="FontAwesome"
                                 Margin="0,0,0,2"
-                                FontSize="12"
+                                FontSize="14"
                                 Text="FontAwesome" />
                             <Hyperlink.Foreground>
                                 <SolidColorBrush x:Name="FontAwesomeBrush" Color="{StaticResource MainColor}" />
@@ -2078,7 +2079,7 @@
                             <TextBlock
                                 x:Name="zondicons"
                                 Margin="0,0,0,2"
-                                FontSize="12"
+                                FontSize="14"
                                 Text="Zondicons"
                                 ToolTip="http://www.zondicons.com/icons.html" />
                             <Hyperlink.Foreground>
@@ -2092,7 +2093,7 @@
                             <TextBlock
                                 x:Name="freepik"
                                 Margin="0,0,0,2"
-                                FontSize="12"
+                                FontSize="14"
                                 Text="Freepik"
                                 ToolTip="https://www.flaticon.com/authors/freepik" />
                             <Hyperlink.Foreground>
@@ -2153,7 +2154,7 @@
                         Margin="0,7,0,2"
                         HorizontalAlignment="Center"
                         VerticalAlignment="Bottom"
-                        FontSize="12"
+                        FontSize="14"
                         Text="2017 - 2021 © Ruben Hyldgaard Negendahl" />
 
                     <TextBlock
@@ -2177,7 +2178,7 @@
                         Margin="0,17,0,15"
                         HorizontalAlignment="Center"
                         VerticalAlignment="Bottom"
-                        FontSize="12"
+                        FontSize="14"
                         FontWeight="Bold"
                         Text="{StaticResource ResourceKey=Version}" />
 

+ 5 - 0
PicView/Views/Windows/SettingsWindow.xaml

@@ -93,6 +93,11 @@
                         <Setter.Value>
                             <ControlTemplate TargetType="{x:Type TabItem}">
                                 <Grid Background="{StaticResource BackgroundSubtleHighlightBrush}">
+                                    <Rectangle
+                                        Width="1"
+                                        Height="35"
+                                        Fill="{StaticResource BorderBrush}"
+                                        HorizontalAlignment="Left" />
                                     <Rectangle
                                         Name="Border"
                                         Height="2"