Alfred Agrell (@Alcaro) commented about dlls/shell32/shlfolder.c:
SFGAO_CANRENAME | SFGAO_CANLINK | SFGAO_CANMOVE | SFGAO_CANCOPY;
if (file_attr & FILE_ATTRIBUTE_DIRECTORY)
*pdwAttributes |= (SFGAO_FOLDER | SFGAO_HASSUBFOLDER | SFGAO_FILESYSANCESTOR | SFGAO_STORAGEANCESTOR | SFGAO_STORAGE);
{
IEnumIDList *enum_ids;
IShellFolder *child;
*pdwAttributes |= (SFGAO_FOLDER | SFGAO_FILESYSANCESTOR | SFGAO_STORAGEANCESTOR | SFGAO_STORAGE);
So we're no longer setting SFGAO_HASSUBFOLDER... but we're also removing it a few lines down? Is it set somewhere higher up, or is something typoed?