https://git.reactos.org/?p=reactos.git;a=commitdiff;h=325d74c30f30b4b6fb66c78d0ec7c7291fa516d3

commit 325d74c30f30b4b6fb66c78d0ec7c7291fa516d3
Author:     Whindmar Saksit <whinds...@proton.me>
AuthorDate: Fri Oct 11 23:57:28 2024 +0200
Commit:     GitHub <nore...@github.com>
CommitDate: Fri Oct 11 23:57:28 2024 +0200

    [SHELL32] Don't display .zip files in BrowseForFolder (#7437)
    
    .zip files have both SFGAO_STREAM and SFGAO_FOLDER attributes set 
(https://devblogs.microsoft.com/oldnewthing/20171101-00/?p=97325)
    
    CORE-19751
---
 dll/win32/shell32/brfolder.cpp          | 9 +++++++++
 dll/win32/shell32/folders/CFSFolder.cpp | 5 +----
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/dll/win32/shell32/brfolder.cpp b/dll/win32/shell32/brfolder.cpp
index d328cf340e8..c23eec56507 100644
--- a/dll/win32/shell32/brfolder.cpp
+++ b/dll/win32/shell32/brfolder.cpp
@@ -343,6 +343,15 @@ BrFolder_InsertItem(
     _In_ PCIDLIST_ABSOLUTE pidlParent,
     _In_ HTREEITEM hParent)
 {
+    if (!(BrowseFlagsToSHCONTF(info->lpBrowseInfo->ulFlags) & 
SHCONTF_NONFOLDERS))
+    {
+#ifdef BIF_BROWSEFILEJUNCTIONS
+        if (!(info->lpBrowseInfo->ulFlags & BIF_BROWSEFILEJUNCTIONS))
+#endif
+            if (SHGetAttributes(lpsf, pidlChild, SFGAO_STREAM) & SFGAO_STREAM)
+                return NULL; // .zip files have both FOLDER and STREAM 
attributes set
+    }
+
     WCHAR szName[MAX_PATH];
     if (!BrFolder_GetName(lpsf, pidlChild, SHGDN_NORMAL, szName))
         return NULL;
diff --git a/dll/win32/shell32/folders/CFSFolder.cpp 
b/dll/win32/shell32/folders/CFSFolder.cpp
index 3c7bb8f2d03..b3437febae5 100644
--- a/dll/win32/shell32/folders/CFSFolder.cpp
+++ b/dll/win32/shell32/folders/CFSFolder.cpp
@@ -624,6 +624,7 @@ HRESULT SHELL32_GetFSItemAttributes(IShellFolder * psf, 
LPCITEMIDLIST pidl, LPDW
         WCHAR szFileName[MAX_PATH];
         LPWSTR pExtension;
         BOOL hasName = _ILSimpleGetTextW(pidl, szFileName, 
_countof(szFileName));
+        dwShellAttributes |= SFGAO_STREAM;
 
         // Vista+ feature: Hidden files with a leading tilde treated as 
super-hidden
         // See https://devblogs.microsoft.com/oldnewthing/20170526-00/?p=96235
@@ -672,10 +673,6 @@ HRESULT SHELL32_GetFSItemAttributes(IShellFolder * psf, 
LPCITEMIDLIST pidl, LPDW
             dwShellAttributes |= (SFGAO_FILESYSANCESTOR | 
SFGAO_STORAGEANCESTOR);
         }
     }
-    else
-    {
-        dwShellAttributes |= SFGAO_STREAM;
-    }
 
     if (dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)
         dwShellAttributes |= SFGAO_HIDDEN | SFGAO_GHOSTED;

Reply via email to