From af92b14af3d4068c2f459272f7dcda0fb230f212 Mon Sep 17 00:00:00 2001 From: Jaex Date: Tue, 5 Nov 2019 13:33:12 +0300 Subject: [PATCH] fixed #4461: Automatically select correct extension in save as dialog --- ShareX.HelpersLib/Helpers/ImageHelpers.cs | 37 +++++++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/ShareX.HelpersLib/Helpers/ImageHelpers.cs b/ShareX.HelpersLib/Helpers/ImageHelpers.cs index e6ea8eaec..95f8b4c5d 100644 --- a/ShareX.HelpersLib/Helpers/ImageHelpers.cs +++ b/ShareX.HelpersLib/Helpers/ImageHelpers.cs @@ -1624,6 +1624,9 @@ public static string SaveImageFileDialog(Image img, string filePath = "", bool u { using (SaveFileDialog sfd = new SaveFileDialog()) { + sfd.Filter = "PNG (*.png)|*.png|JPEG (*.jpg, *.jpeg, *.jpe, *.jfif)|*.jpg;*.jpeg;*.jpe;*.jfif|GIF (*.gif)|*.gif|BMP (*.bmp)|*.bmp|TIFF (*.tif, *.tiff)|*.tif;*.tiff"; + sfd.DefaultExt = "png"; + string initialDirectory = null; if (useLastDirectory && !string.IsNullOrEmpty(HelpersOptions.LastSaveDirectory) && Directory.Exists(HelpersOptions.LastSaveDirectory)) @@ -1640,12 +1643,40 @@ public static string SaveImageFileDialog(Image img, string filePath = "", bool u initialDirectory = folder; } - sfd.FileName = Path.GetFileNameWithoutExtension(filePath); + sfd.FileName = Path.GetFileName(filePath); + + string ext = Helpers.GetFilenameExtension(filePath); + + if (!string.IsNullOrEmpty(ext)) + { + ext = ext.ToLowerInvariant(); + + switch (ext) + { + case "png": + sfd.FilterIndex = 1; + break; + case "jpg": + case "jpeg": + case "jpe": + case "jfif": + sfd.FilterIndex = 2; + break; + case "gif": + sfd.FilterIndex = 3; + break; + case "bmp": + sfd.FilterIndex = 4; + break; + case "tif": + case "tiff": + sfd.FilterIndex = 5; + break; + } + } } sfd.InitialDirectory = initialDirectory; - sfd.DefaultExt = "png"; - sfd.Filter = "PNG (*.png)|*.png|JPEG (*.jpg, *.jpeg, *.jpe, *.jfif)|*.jpg;*.jpeg;*.jpe;*.jfif|GIF (*.gif)|*.gif|BMP (*.bmp)|*.bmp|TIFF (*.tif, *.tiff)|*.tif;*.tiff"; if (sfd.ShowDialog() == DialogResult.OK && !string.IsNullOrEmpty(sfd.FileName)) {