[PATCH] shell32: Cosmetic changes to file type names.
Lauri Kenttä
lauri.kentta at gmail.com
Sun Nov 27 07:39:08 CST 2016
Report "name" as "File" instead of "-file".
Report "name." as "File" instead of ".-file".
Report "some.ext" as ".ext file" instead of ".ext-file".
Report folders correctly as "Folder" instead of "File".
Fixes bug 26155 mostly; the rest is about what we have in registry.
Signed-off-by: Lauri Kenttä <lauri.kentta at gmail.com>
---
dlls/shell32/pidl.c | 20 +++++++++++++++-----
dlls/shell32/shell32_main.c | 23 ++++++++++++++++++-----
2 files changed, 33 insertions(+), 10 deletions(-)
diff --git a/dlls/shell32/pidl.c b/dlls/shell32/pidl.c
index 1856c12..f3f2016 100644
--- a/dlls/shell32/pidl.c
+++ b/dlls/shell32/pidl.c
@@ -2408,17 +2408,27 @@ void _ILGetFileType(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
{
char sTemp[64];
- if(uOutSize > 0)
- pOut[0] = 0;
- if (_ILGetExtension (pidl, sTemp, 64))
+ if (uOutSize > 6 && _ILGetExtension (pidl, sTemp, 64))
{
if (!( HCR_MapTypeToValueA(sTemp, sTemp, 64, TRUE)
&& HCR_MapTypeToValueA(sTemp, pOut, uOutSize, FALSE )))
{
- lstrcpynA (pOut, sTemp, uOutSize - 6);
- strcat (pOut, "-file");
+ if (sTemp[0])
+ {
+ lstrcpynA (pOut, sTemp, uOutSize - 6);
+ strcat (pOut, " file");
+ }
+ else
+ {
+ lstrcpynA (pOut, "File", uOutSize);
+ }
}
}
+ else
+ {
+ /* "name" or "name." => "File" */
+ lstrcpynA (pOut, "File", uOutSize);
+ }
}
else
lstrcpynA(pOut, "Folder", uOutSize);
diff --git a/dlls/shell32/shell32_main.c b/dlls/shell32/shell32_main.c
index dce1896..7e1c7d5 100644
--- a/dlls/shell32/shell32_main.c
+++ b/dlls/shell32/shell32_main.c
@@ -537,8 +537,9 @@ DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR path,DWORD dwFileAttributes,
/* get the type name */
if (SUCCEEDED(hr) && (flags & SHGFI_TYPENAME))
{
+ static const WCHAR szFolder[] = { 'F','o','l','d','e','r',0 };
static const WCHAR szFile[] = { 'F','i','l','e',0 };
- static const WCHAR szDashFile[] = { '-','f','i','l','e',0 };
+ static const WCHAR szSpaceFile[] = { ' ','f','i','l','e',0 };
if (!(flags & SHGFI_USEFILEATTRIBUTES) || (flags & SHGFI_PIDL))
{
@@ -550,17 +551,29 @@ DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR path,DWORD dwFileAttributes,
else
{
if (dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
- strcatW (psfi->szTypeName, szFile);
+ strcatW (psfi->szTypeName, szFolder);
else
{
WCHAR sTemp[64];
lstrcpyW(sTemp,PathFindExtensionW(szFullPath));
- if (!( HCR_MapTypeToValueW(sTemp, sTemp, 64, TRUE) &&
+ if (sTemp[0] == 0 || (sTemp[0] == '.' && sTemp[1] == 0))
+ {
+ /* "name" or "name." => "File" */
+ lstrcpynW (psfi->szTypeName, szFile, 64);
+ }
+ else if (!( HCR_MapTypeToValueW(sTemp, sTemp, 64, TRUE) &&
HCR_MapTypeToValueW(sTemp, psfi->szTypeName, 80, FALSE )))
{
- lstrcpynW (psfi->szTypeName, sTemp, 64);
- strcatW (psfi->szTypeName, szDashFile);
+ if (sTemp[0])
+ {
+ lstrcpynW (psfi->szTypeName, sTemp, 64);
+ strcatW (psfi->szTypeName, szSpaceFile);
+ }
+ else
+ {
+ lstrcpynW (psfi->szTypeName, szFile, 64);
+ }
}
}
}
--
2.10.2
More information about the wine-patches
mailing list