Commit d484650b authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

shell32: Implement ParseName() using shellfolder API.

parent 2406d6cd
......@@ -1502,31 +1502,25 @@ static HRESULT WINAPI FolderImpl_Items(Folder3 *iface, FolderItems **ppid)
static HRESULT WINAPI FolderImpl_ParseName(Folder3 *iface, BSTR name, FolderItem **item)
{
FolderImpl *This = impl_from_Folder(iface);
FolderItem *self;
BSTR str;
WCHAR pathW[MAX_PATH];
LPITEMIDLIST pidl;
STRRET strret;
HRESULT hr;
TRACE("(%p,%s,%p)\n", iface, debugstr_w(name), item);
*item = NULL;
if (!name || !name[0])
if (FAILED(IShellFolder2_ParseDisplayName(This->folder, NULL, NULL, name, NULL, &pidl, NULL)))
return S_FALSE;
hr = Folder3_get_Self(iface, &self);
hr = IShellFolder2_GetDisplayNameOf(This->folder, pidl, SHGDN_FORPARSING, &strret);
ILFree(pidl);
if (FAILED(hr))
return hr;
hr = FolderItem_get_Path(self, &str);
FolderItem_Release(self);
PathCombineW(pathW, str, name);
SysFreeString(str);
if (!PathFileExistsW(pathW))
return S_FALSE;
StrRetToBufW(&strret, NULL, pathW, sizeof(pathW)/sizeof(*pathW));
return FolderItem_Constructor(This, pathW, item);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment