mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[SHELL32] SHBrowseForFolderW: Fix creating directories in the desktop and in drives like C: CORE-13925
This commit is contained in:
parent
8e850d19bc
commit
78b78d6e73
1 changed files with 33 additions and 16 deletions
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue