https://git.reactos.org/?p=reactos.git;a=commitdiff;h=6cb1e57a630e09ba90a3e0c292beaf5754e0b7de

commit 6cb1e57a630e09ba90a3e0c292beaf5754e0b7de
Author:     Katayama Hirofumi MZ <[email protected]>
AuthorDate: Sun Mar 6 15:25:45 2022 +0900
Commit:     GitHub <[email protected]>
CommitDate: Sun Mar 6 15:25:45 2022 +0900

    [SHELL32] Support CSIDL_FLAG_NO_ALIAS (#4381)
    
    Adding the CSIDL_FLAG_NO_ALIAS flag to SHGetSpecialFolderLocation should 
return the physical PIDL if possible.
    CORE-18079
---
 dll/win32/shell32/wine/shellpath.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/dll/win32/shell32/wine/shellpath.c 
b/dll/win32/shell32/wine/shellpath.c
index 736092b20a5..70409260e69 100644
--- a/dll/win32/shell32/wine/shellpath.c
+++ b/dll/win32/shell32/wine/shellpath.c
@@ -2888,6 +2888,9 @@ HRESULT WINAPI SHGetFolderLocation(
        LPITEMIDLIST *ppidl)
 {
     HRESULT hr = E_INVALIDARG;
+#ifdef __REACTOS__
+    WCHAR szPath[MAX_PATH];
+#endif
 
     TRACE("%p 0x%08x %p 0x%08x %p\n",
      hwndOwner, nFolder, hToken, dwReserved, ppidl);
@@ -2897,6 +2900,15 @@ HRESULT WINAPI SHGetFolderLocation(
     if (dwReserved)
         return E_INVALIDARG;
 
+#ifdef __REACTOS__
+    if ((nFolder & CSIDL_FLAG_NO_ALIAS) &&
+        SHGetSpecialFolderPathW(hwndOwner, szPath, (nFolder & 
CSIDL_FOLDER_MASK), FALSE))
+    {
+        *ppidl = ILCreateFromPathW(szPath);
+        if (*ppidl)
+            return S_OK;
+    }
+#endif
     /* The virtual folders' locations are not user-dependent */
     *ppidl = NULL;
     switch (nFolder & CSIDL_FOLDER_MASK)

Reply via email to