[SHELL32] SHBrowseForFolderW: Fix creating directories in the desktop and in drives like C: CORE-13925

This commit is contained in:
Giannis Adamopoulos 2017-11-05 12:09:42 +02:00
parent 8e850d19bc
commit 78b78d6e73

View file

@ -748,6 +748,38 @@ static HRESULT BrsFolder_NewFolder(browse_info *info)
HRESULT hr;
int len;
#ifdef __REACTOS__
hr = SHGetDesktopFolder(&desktop);
if(FAILED(hr))
return hr;
if (info->pidlRet)
{
hr = IShellFolder_BindToObject(desktop, info->pidlRet, 0, &IID_IShellFolder, (void**)&cur);
IShellFolder_Release(desktop);
if(FAILED(hr))
return hr;
hr = SHGetPathFromIDListW(info->pidlRet, path);
}
else
{
cur = desktop;
hr = SHGetFolderPathW(NULL, CSIDL_DESKTOPDIRECTORY, NULL, SHGFP_TYPE_CURRENT, path);
}
if(FAILED(hr))
return hr;
if (!LoadStringW(shell32_hInstance, IDS_NEWFOLDER, wszNewFolder, _countof(wszNewFolder)))
return E_FAIL;
if (!PathYetAnotherMakeUniqueName(name, path, NULL, wszNewFolder))
return E_FAIL;
len = strlenW(path);
if(len<MAX_PATH && name[len] == L'\\')
len++;
#else
if(!info->pidlRet) {
ERR("Make new folder button should be disabled\n");
return E_FAIL;
@ -757,27 +789,12 @@ static HRESULT BrsFolder_NewFolder(browse_info *info)
hr = SHGetDesktopFolder(&desktop);
if(FAILED(hr))
return hr;
hr = IShellFolder_BindToObject(desktop, info->pidlRet, 0, &IID_IShellFolder, (void**)&cur);
IShellFolder_Release(desktop);
if(FAILED(hr))
return hr;
#ifdef __REACTOS__
hr = SHGetPathFromIDListW(info->pidlRet, path);
if(FAILED(hr))
return hr;
len = strlenW(path);
if(len<MAX_PATH)
len++;
if (!LoadStringW(shell32_hInstance, IDS_NEWFOLDER, wszNewFolder, _countof(wszNewFolder)))
return E_FAIL;
if (!PathYetAnotherMakeUniqueName(name, path, NULL, wszNewFolder))
return E_FAIL;
#else
hr = IShellFolder_QueryInterface(cur, &IID_ISFHelper, (void**)&sfhelper);
if(FAILED(hr))
return hr;