Index: reactos/dll/win32/shell32/dialogs/folder_options.cpp =================================================================== --- reactos/dll/win32/shell32/dialogs/folder_options.cpp (revision 75532) +++ reactos/dll/win32/shell32/dialogs/folder_options.cpp (working copy) @@ -710,11 +710,25 @@ { ADVANCED_ENTRY *pEntry1 = (ADVANCED_ENTRY *)x; ADVANCED_ENTRY *pEntry2 = (ADVANCED_ENTRY *)y; - if (pEntry1->dwOrdinal < pEntry2->dwOrdinal) - return -1; - if (pEntry1->dwOrdinal > pEntry2->dwOrdinal) - return 1; - return 0; + DWORD dwParentID1 = pEntry1->dwParentID; + DWORD dwParentID2 = pEntry2->dwParentID; + while (dwParentID1 != dwParentID2) + { + ADVANCED_ENTRY *pParent1 = Advanced_GetItem(dwParentID1); + ADVANCED_ENTRY *pParent2 = Advanced_GetItem(dwParentID2); + if (!pParent1 && !pParent2) + break; + if (!pParent1 && pParent2) + return -1; + if (pParent1 && !pParent2) + return 1; + INT nCompare = lstrcmpi(pParent1->szText, pParent2->szText); + if (nCompare) + return nCompare; + dwParentID1 = pParent1->dwParentID; + dwParentID2 = pParent2->dwParentID; + } + return lstrcmpi(pEntry1->szText, pEntry2->szText); } static VOID