From 021850c0b8364b2fb814d072bccea4efbba9d212 Mon Sep 17 00:00:00 2001 From: Owen Rudge Date: Sat, 26 Jul 2008 00:34:15 +0100 Subject: [PATCH] winefile: Fix absolute pidl conversion for non-filesystem shell objects. --- programs/winefile/winefile.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/programs/winefile/winefile.c b/programs/winefile/winefile.c index 311d58093b9..a51c80b8fe4 100644 --- a/programs/winefile/winefile.c +++ b/programs/winefile/winefile.c @@ -867,20 +867,14 @@ static LPITEMIDLIST get_path_pidl(LPTSTR path, HWND hwnd) static LPITEMIDLIST get_to_absolute_pidl(Entry* entry, HWND hwnd) { if (entry->up && entry->up->etype==ET_SHELL) { - IShellFolder* folder = entry->up->folder; - WCHAR buffer[MAX_PATH]; + LPITEMIDLIST idl = NULL; - HRESULT hr = path_from_pidlW(folder, entry->pidl, buffer, MAX_PATH); - - if (SUCCEEDED(hr)) { - LPITEMIDLIST pidl; - ULONG len; - - hr = IShellFolder_ParseDisplayName(Globals.iDesktop, hwnd, NULL, buffer, &len, &pidl, NULL); - - if (SUCCEEDED(hr)) - return pidl; + while (entry->up) { + idl = ILCombine(ILClone(entry->pidl), idl); + entry = entry->up; } + + return idl; } else if (entry->etype == ET_WINDOWS) { TCHAR path[MAX_PATH];