mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[SHELL32] SetNameOf should not append old extension to folders (#6954)
This commit is contained in:
parent
3f6af8b848
commit
ecb5cae48f
3 changed files with 23 additions and 27 deletions
|
@ -270,9 +270,12 @@ HRESULT WINAPI CNetworkConnections::SetNameOf (
|
|||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
*pPidlOut = ILCreateNetConnectItem(pCon);
|
||||
if (*pPidlOut == NULL)
|
||||
return E_FAIL;
|
||||
if (pPidlOut)
|
||||
{
|
||||
*pPidlOut = ILCreateNetConnectItem(pCon);
|
||||
if (*pPidlOut == NULL)
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
|
|
@ -1499,7 +1499,7 @@ HRESULT WINAPI CFSFolder::SetNameOf(
|
|||
}
|
||||
|
||||
/* build source path */
|
||||
PathCombineW(szSrc, m_sPathTarget, pDataW->wszName);
|
||||
PathCombineW(szSrc, m_sPathTarget, pDataW->wszName); // FIXME: PIDLs without wide string
|
||||
|
||||
/* build destination path */
|
||||
if (dwFlags == SHGDN_NORMAL || dwFlags & SHGDN_INFOLDER)
|
||||
|
@ -1507,39 +1507,33 @@ HRESULT WINAPI CFSFolder::SetNameOf(
|
|||
else
|
||||
lstrcpynW(szDest, lpName, MAX_PATH);
|
||||
|
||||
if(!(dwFlags & SHGDN_FORPARSING) && SHELL_FS_HideExtension(szSrc)) {
|
||||
WCHAR *ext = PathFindExtensionW(szSrc);
|
||||
if(*ext != '\0') {
|
||||
INT len = wcslen(szDest);
|
||||
lstrcpynW(szDest + len, ext, MAX_PATH - len);
|
||||
}
|
||||
if (!(dwFlags & SHGDN_FORPARSING) && !bIsFolder && SHELL_FS_HideExtension(szSrc))
|
||||
{
|
||||
LPCWSTR ext = PathFindExtensionW(szSrc);
|
||||
if (*ext)
|
||||
PathAddExtensionW(szDest, ext);
|
||||
}
|
||||
|
||||
HRESULT hr = S_OK;
|
||||
TRACE ("src=%s dest=%s\n", debugstr_w(szSrc), debugstr_w(szDest));
|
||||
if (!wcscmp(szSrc, szDest))
|
||||
{
|
||||
/* src and destination is the same */
|
||||
HRESULT hr = S_OK;
|
||||
if (pPidlOut)
|
||||
hr = _ILCreateFromPathW(szDest, pPidlOut);
|
||||
|
||||
return hr;
|
||||
hr = SHILClone(pidl, pPidlOut);
|
||||
}
|
||||
|
||||
if (MoveFileW (szSrc, szDest))
|
||||
else if (MoveFileW(szSrc, szDest))
|
||||
{
|
||||
HRESULT hr = S_OK;
|
||||
|
||||
if (pPidlOut)
|
||||
hr = _ILCreateFromPathW(szDest, pPidlOut);
|
||||
hr = ParseDisplayName(hwndOwner, NULL, PathFindFileNameW(szDest), NULL, pPidlOut, NULL);
|
||||
|
||||
SHChangeNotify (bIsFolder ? SHCNE_RENAMEFOLDER : SHCNE_RENAMEITEM,
|
||||
SHCNF_PATHW, szSrc, szDest);
|
||||
|
||||
return hr;
|
||||
SHChangeNotify(bIsFolder ? SHCNE_RENAMEFOLDER : SHCNE_RENAMEITEM, SHCNF_PATHW, szSrc, szDest);
|
||||
}
|
||||
|
||||
return E_FAIL;
|
||||
else
|
||||
{
|
||||
hr = HResultFromWin32(GetLastError());
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT WINAPI CFSFolder::GetDefaultSearchGUID(GUID * pguid)
|
||||
|
|
|
@ -772,8 +772,7 @@ HRESULT WINAPI CRegFolder::SetNameOf(HWND hwndOwner, PCUITEMID_CHILD pidl, /*
|
|||
|
||||
if (res == ERROR_SUCCESS)
|
||||
{
|
||||
*pPidlOut = ILClone(pidl);
|
||||
return S_OK;
|
||||
return pPidlOut ? SHILClone(pidl, pPidlOut) : S_OK;
|
||||
}
|
||||
|
||||
return E_FAIL;
|
||||
|
|
Loading…
Reference in a new issue