Robert Shearman : shell32:
Convert ISF_Desktop_fnGetDisplayNameOf to Unicode.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jun 19 16:18:15 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 6c4c4e351515ef370289ea149fff4a3b85a70981
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=6c4c4e351515ef370289ea149fff4a3b85a70981
Author: Robert Shearman <rob at codeweavers.com>
Date: Mon Jun 19 20:27:13 2006 +0100
shell32: Convert ISF_Desktop_fnGetDisplayNameOf to Unicode.
---
dlls/shell32/shfldr_desktop.c | 64 ++++++++++++++++-------------------------
1 files changed, 25 insertions(+), 39 deletions(-)
diff --git a/dlls/shell32/shfldr_desktop.c b/dlls/shell32/shfldr_desktop.c
index 29b76a4..3d717d9 100644
--- a/dlls/shell32/shfldr_desktop.c
+++ b/dlls/shell32/shfldr_desktop.c
@@ -570,33 +570,13 @@ static HRESULT WINAPI ISF_Desktop_fnGetD
if (!strRet)
return E_INVALIDARG;
- strRet->uType = STRRET_CSTR;
if (_ILIsDesktop (pidl))
{
if ((GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL) &&
(GET_SHGDN_FOR (dwFlags) & SHGDN_FORPARSING))
- {
- BOOL defCharUsed;
-
- WideCharToMultiByte( CP_ACP, 0, This->sPathTarget, -1,
- strRet->u.cStr, MAX_PATH, NULL, &defCharUsed );
- if (defCharUsed)
- {
- strRet->u.pOleStr = SHAlloc((lstrlenW(This->sPathTarget)+1) *
- sizeof(WCHAR));
- if (!strRet->u.pOleStr)
- hr = E_OUTOFMEMORY;
- else
- {
- strcpyW(strRet->u.pOleStr, This->sPathTarget);
- strRet->uType = STRRET_WSTR;
- }
- }
- }
+ strcpyW(wszPath, This->sPathTarget);
else
- {
- HCR_GetClassNameA(&CLSID_ShellDesktop, strRet->u.cStr, MAX_PATH);
- }
+ HCR_GetClassNameW(&CLSID_ShellDesktop, wszPath, MAX_PATH);
}
else if (_ILIsPidlSimple (pidl))
{
@@ -646,7 +626,6 @@ static HRESULT WINAPI ISF_Desktop_fnGetD
if ((GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL) &&
bWantsForParsing)
{
- WCHAR wszPath[MAX_PATH];
/*
* we need the filesystem path to the destination folder.
* Only the folder itself can know it
@@ -654,24 +633,19 @@ static HRESULT WINAPI ISF_Desktop_fnGetD
hr = SHELL32_GetDisplayNameOfChild (iface, pidl, dwFlags,
wszPath,
MAX_PATH);
- if (SUCCEEDED(hr))
- {
- if (!WideCharToMultiByte(CP_ACP, 0, wszPath, -1, strRet->u.cStr, MAX_PATH,
- NULL, NULL))
- wszPath[0] = '\0';
- }
}
else
{
/* parsing name like ::{...} */
- lstrcpyA (strRet->u.cStr, "::");
- SHELL32_GUIDToStringA (clsid, &strRet->u.cStr[2]);
+ wszPath[0] = ':';
+ wszPath[1] = ':';
+ SHELL32_GUIDToStringW (clsid, &wszPath[2]);
}
}
else
{
/* user friendly name */
- HCR_GetClassNameA (clsid, strRet->u.cStr, MAX_PATH);
+ HCR_GetClassNameW (clsid, wszPath, MAX_PATH);
}
}
else
@@ -691,9 +665,6 @@ static HRESULT WINAPI ISF_Desktop_fnGetD
if (!_ILIsFolder(pidl))
SHELL_FS_ProcessDisplayFilename(wszPath, dwFlags);
-
- WideCharToMultiByte(CP_ACP, 0, wszPath, -1, strRet->u.cStr, MAX_PATH,
- NULL, NULL);
}
}
else
@@ -701,11 +672,26 @@ static HRESULT WINAPI ISF_Desktop_fnGetD
/* a complex pidl, let the subfolder do the work */
hr = SHELL32_GetDisplayNameOfChild (iface, pidl, dwFlags,
wszPath, MAX_PATH);
- if (SUCCEEDED(hr))
+ }
+
+ if (SUCCEEDED(hr))
+ {
+ BOOL defCharUsed;
+ strRet->uType = STRRET_CSTR;
+ if (!WideCharToMultiByte(CP_ACP, 0, wszPath, -1, strRet->u.cStr, MAX_PATH,
+ NULL, &defCharUsed))
+ strRet->u.cStr[0] = '\0';
+ if (defCharUsed)
{
- if (!WideCharToMultiByte(CP_ACP, 0, wszPath, -1, strRet->u.cStr, MAX_PATH,
- NULL, NULL))
- wszPath[0] = '\0';
+ strRet->u.pOleStr = SHAlloc((lstrlenW(This->sPathTarget)+1) *
+ sizeof(WCHAR));
+ if (!strRet->u.pOleStr)
+ hr = E_OUTOFMEMORY;
+ else
+ {
+ strcpyW(strRet->u.pOleStr, This->sPathTarget);
+ strRet->uType = STRRET_WSTR;
+ }
}
}
More information about the wine-cvs
mailing list