[PATCH 0/1] MR4258: comdlg32: Perform case-insensitive comparison of extension in file dialog.
If the user, when saving using `IFileSaveDialog`, types a filename with an extension that differs from that specified in the filter definition, an extra extension is appended to the resulting filename (e.g. "test.TXT.txt"). This behaviour does not occur on Windows. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4258
From: Owen Rudge <orudge(a)codeweavers.com> --- dlls/comdlg32/itemdlg.c | 2 +- dlls/comdlg32/tests/itemdlg.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/dlls/comdlg32/itemdlg.c b/dlls/comdlg32/itemdlg.c index 1a598046dff..1cdebf8f738 100644 --- a/dlls/comdlg32/itemdlg.c +++ b/dlls/comdlg32/itemdlg.c @@ -641,7 +641,7 @@ static HRESULT on_default_action(FileDialogImpl *This) if(newext) { WCHAR *ext = PathFindExtensionW(canon_filename); - if(lstrcmpW(ext, newext)) + if(lstrcmpiW(ext, newext)) lstrcatW(canon_filename, newext); } } diff --git a/dlls/comdlg32/tests/itemdlg.c b/dlls/comdlg32/tests/itemdlg.c index ddb2dc30fe7..15c898adc50 100644 --- a/dlls/comdlg32/tests/itemdlg.c +++ b/dlls/comdlg32/tests/itemdlg.c @@ -1494,6 +1494,7 @@ static void test_filename(void) static const WCHAR filename_dotextW[] = {'w','i','n','e','t','e','s','t','.',0}; static const WCHAR filename_dotanddefW[] = {'w','i','n','e','t','e','s','t','.','.','w','t','e',0}; static const WCHAR filename_defextW[] = {'w','i','n','e','t','e','s','t','.','w','t','e',0}; + static const WCHAR filename_mixedcaseW[] = {'w','i','n','e','t','e','s','t','.','W','T','E',0}; static const WCHAR filename_ext1W[] = {'w','i','n','e','t','e','s','t','.','w','t','1',0}; static const WCHAR filename_ext2W[] = {'w','i','n','e','t','e','s','t','.','w','t','2',0}; static const WCHAR filename_ext1anddefW[] = @@ -1530,6 +1531,8 @@ static void test_filename(void) test_filename_savedlg(filename_noextW, defextW, filterspec, 3, filename_ext1W); /* Default extension, filterspec with "complex" extension */ test_filename_savedlg(filename_noextW, defextW, filterspec2, 1, filename_ext2W); + /* Default extension, filterspec with extension that differs in case from the specified filename */ + test_filename_savedlg(filename_mixedcaseW, defextW, filterspec, 0, filename_mixedcaseW); GetCurrentDirectoryW(MAX_PATH, buf); ok(!!pSHCreateItemFromParsingName, "SHCreateItemFromParsingName is missing.\n"); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/4258
This merge request was approved by Esme Povirk. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4258
participants (3)
-
Esme Povirk (@madewokherd) -
Owen Rudge -
Owen Rudge (@orudge)