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.
From: Owen Rudge orudge@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");
This merge request was approved by Esme Povirk.