From 776c3a3495cc4e510637828a57c4faf18276a2d0 Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Wed, 28 Feb 2024 13:23:27 +0900 Subject: [PATCH] [SHELL32] SHBrowseForFolder: Fix pszDisplayName (#6549) pszDisplayName is for display name, not for full path. JIRA issue: CORE-5866 - If lpBrowseInfo->pszDisplayName is valid, use SHGetFileInfoW to get display name. - Don't use SHGetPathFromIDListW to get display name. It's wrong. --- dll/win32/shell32/wine/brsfolder.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/dll/win32/shell32/wine/brsfolder.c b/dll/win32/shell32/wine/brsfolder.c index d454ecf0f53..b44d5d20b38 100644 --- a/dll/win32/shell32/wine/brsfolder.c +++ b/dll/win32/shell32/wine/brsfolder.c @@ -1052,7 +1052,19 @@ static BOOL BrsFolder_OnCommand( browse_info *info, UINT id ) info->pidlRet = _ILCreateDesktop(); pdump( info->pidlRet ); if (lpBrowseInfo->pszDisplayName) +#ifdef __REACTOS__ + { + SHFILEINFOW fileInfo = { NULL }; + lpBrowseInfo->pszDisplayName[0] = UNICODE_NULL; + if (SHGetFileInfoW((LPCWSTR)info->pidlRet, 0, &fileInfo, sizeof(fileInfo), + SHGFI_PIDL | SHGFI_DISPLAYNAME)) + { + lstrcpynW(lpBrowseInfo->pszDisplayName, fileInfo.szDisplayName, MAX_PATH); + } + } +#else SHGetPathFromIDListW( info->pidlRet, lpBrowseInfo->pszDisplayName ); +#endif EndDialog( info->hWnd, 1 ); return TRUE;