[SHELL32] SetNameOf should not append old extension to folders (#6954)

This commit is contained in:
Whindmar Saksit 2024-06-08 18:45:23 +02:00 committed by GitHub
parent 3f6af8b848
commit ecb5cae48f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 23 additions and 27 deletions

View file

@ -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;
}

View file

@ -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)

View file

@ -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;