Skip to content

Commit ae3aee6

Browse files
authored
[SHELL32] Fix CFSFolder::CompareIDs.SHFSF_COL_TYPE (reactos#8589)
JIRA issue: CORE-20434 Fix 1st bug of CORE-20434. - In CFSFolder::CompareIDs, implement SHFSF_COL_TYPE, using SHGetFileInfoW.
1 parent 873abe8 commit ae3aee6

1 file changed

Lines changed: 9 additions & 6 deletions

File tree

dll/win32/shell32/folders/CFSFolder.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1133,8 +1133,6 @@ HRESULT WINAPI CFSFolder::CompareIDs(LPARAM lParam,
11331133

11341134
LPPIDLDATA pData1 = _ILGetDataPointer(pidl1);
11351135
LPPIDLDATA pData2 = _ILGetDataPointer(pidl2);
1136-
LPWSTR pExtension1, pExtension2;
1137-
11381136
HRESULT hr = CompareSortFoldersFirst(pidl1, pidl2);
11391137
if (SUCCEEDED(hr))
11401138
return hr;
@@ -1153,11 +1151,16 @@ HRESULT WINAPI CFSFolder::CompareIDs(LPARAM lParam,
11531151
result = 0;
11541152
break;
11551153
case SHFSF_COL_TYPE:
1156-
// FIXME: Compare the type strings from SHGetFileInfo
1157-
pExtension1 = PathFindExtensionW(pszName1);
1158-
pExtension2 = PathFindExtensionW(pszName2);
1159-
result = CompareUiStrings(pExtension1, pExtension2, lParam);
1154+
{
1155+
SHFILEINFOW info1, info2;
1156+
enum { flags = SHGFI_PIDL | SHGFI_TYPENAME };
1157+
if (SHGetFileInfoW((LPCWSTR)pidl1, 0, &info1, sizeof(info1), flags) &&
1158+
SHGetFileInfoW((LPCWSTR)pidl2, 0, &info2, sizeof(info2), flags))
1159+
{
1160+
result = CompareUiStrings(info1.szTypeName, info2.szTypeName, lParam);
1161+
}
11601162
break;
1163+
}
11611164
case SHFSF_COL_MDATE:
11621165
result = pData1->u.file.uFileDate - pData2->u.file.uFileDate;
11631166
if (result == 0)

0 commit comments

Comments
 (0)