mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +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))
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
return hr;
|
return hr;
|
||||||
|
|
||||||
*pPidlOut = ILCreateNetConnectItem(pCon);
|
if (pPidlOut)
|
||||||
if (*pPidlOut == NULL)
|
{
|
||||||
return E_FAIL;
|
*pPidlOut = ILCreateNetConnectItem(pCon);
|
||||||
|
if (*pPidlOut == NULL)
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1499,7 +1499,7 @@ HRESULT WINAPI CFSFolder::SetNameOf(
|
||||||
}
|
}
|
||||||
|
|
||||||
/* build source path */
|
/* build source path */
|
||||||
PathCombineW(szSrc, m_sPathTarget, pDataW->wszName);
|
PathCombineW(szSrc, m_sPathTarget, pDataW->wszName); // FIXME: PIDLs without wide string
|
||||||
|
|
||||||
/* build destination path */
|
/* build destination path */
|
||||||
if (dwFlags == SHGDN_NORMAL || dwFlags & SHGDN_INFOLDER)
|
if (dwFlags == SHGDN_NORMAL || dwFlags & SHGDN_INFOLDER)
|
||||||
|
@ -1507,39 +1507,33 @@ HRESULT WINAPI CFSFolder::SetNameOf(
|
||||||
else
|
else
|
||||||
lstrcpynW(szDest, lpName, MAX_PATH);
|
lstrcpynW(szDest, lpName, MAX_PATH);
|
||||||
|
|
||||||
if(!(dwFlags & SHGDN_FORPARSING) && SHELL_FS_HideExtension(szSrc)) {
|
if (!(dwFlags & SHGDN_FORPARSING) && !bIsFolder && SHELL_FS_HideExtension(szSrc))
|
||||||
WCHAR *ext = PathFindExtensionW(szSrc);
|
{
|
||||||
if(*ext != '\0') {
|
LPCWSTR ext = PathFindExtensionW(szSrc);
|
||||||
INT len = wcslen(szDest);
|
if (*ext)
|
||||||
lstrcpynW(szDest + len, ext, MAX_PATH - len);
|
PathAddExtensionW(szDest, ext);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT hr = S_OK;
|
||||||
TRACE ("src=%s dest=%s\n", debugstr_w(szSrc), debugstr_w(szDest));
|
TRACE ("src=%s dest=%s\n", debugstr_w(szSrc), debugstr_w(szDest));
|
||||||
if (!wcscmp(szSrc, szDest))
|
if (!wcscmp(szSrc, szDest))
|
||||||
{
|
{
|
||||||
/* src and destination is the same */
|
/* src and destination is the same */
|
||||||
HRESULT hr = S_OK;
|
|
||||||
if (pPidlOut)
|
if (pPidlOut)
|
||||||
hr = _ILCreateFromPathW(szDest, pPidlOut);
|
hr = SHILClone(pidl, pPidlOut);
|
||||||
|
|
||||||
return hr;
|
|
||||||
}
|
}
|
||||||
|
else if (MoveFileW(szSrc, szDest))
|
||||||
if (MoveFileW (szSrc, szDest))
|
|
||||||
{
|
{
|
||||||
HRESULT hr = S_OK;
|
|
||||||
|
|
||||||
if (pPidlOut)
|
if (pPidlOut)
|
||||||
hr = _ILCreateFromPathW(szDest, pPidlOut);
|
hr = ParseDisplayName(hwndOwner, NULL, PathFindFileNameW(szDest), NULL, pPidlOut, NULL);
|
||||||
|
|
||||||
SHChangeNotify (bIsFolder ? SHCNE_RENAMEFOLDER : SHCNE_RENAMEITEM,
|
SHChangeNotify(bIsFolder ? SHCNE_RENAMEFOLDER : SHCNE_RENAMEITEM, SHCNF_PATHW, szSrc, szDest);
|
||||||
SHCNF_PATHW, szSrc, szDest);
|
|
||||||
|
|
||||||
return hr;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
return E_FAIL;
|
{
|
||||||
|
hr = HResultFromWin32(GetLastError());
|
||||||
|
}
|
||||||
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT WINAPI CFSFolder::GetDefaultSearchGUID(GUID * pguid)
|
HRESULT WINAPI CFSFolder::GetDefaultSearchGUID(GUID * pguid)
|
||||||
|
|
|
@ -772,8 +772,7 @@ HRESULT WINAPI CRegFolder::SetNameOf(HWND hwndOwner, PCUITEMID_CHILD pidl, /*
|
||||||
|
|
||||||
if (res == ERROR_SUCCESS)
|
if (res == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
*pPidlOut = ILClone(pidl);
|
return pPidlOut ? SHILClone(pidl, pPidlOut) : S_OK;
|
||||||
return S_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
Loading…
Reference in a new issue