mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
[SHELL32] Fix detail view in My Computer showing Comment in 'Total Size' column (#5438) CORE-19000
Fixes the regression of 0.4.15-dev-5526-g 4c25af5b
This commit is contained in:
parent
4057264a19
commit
035790dda5
1 changed files with 31 additions and 21 deletions
|
@ -572,8 +572,6 @@ static const shvheader MyComputerSFHeader[] = {
|
|||
{IDS_SHV_COLUMN_COMMENTS, SHCOLSTATE_TYPE_STR, LVCFMT_LEFT, 10},
|
||||
};
|
||||
|
||||
#define MYCOMPUTERSHELLVIEWCOLUMNS 5
|
||||
|
||||
static const DWORD dwComputerAttributes =
|
||||
SFGAO_CANRENAME | SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_DROPTARGET |
|
||||
SFGAO_FILESYSANCESTOR | SFGAO_FOLDER | SFGAO_HASSUBFOLDER;
|
||||
|
@ -752,28 +750,29 @@ HRESULT WINAPI CDrivesFolder::CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1
|
|||
if (_ILIsSpecialFolder(pidl1) || _ILIsSpecialFolder(pidl2))
|
||||
return m_regFolder->CompareIDs(lParam, pidl1, pidl2);
|
||||
|
||||
if (!_ILIsDrive(pidl1) || !_ILIsDrive(pidl2) || LOWORD(lParam) >= MYCOMPUTERSHELLVIEWCOLUMNS)
|
||||
UINT iColumn = LOWORD(lParam);
|
||||
if (!_ILIsDrive(pidl1) || !_ILIsDrive(pidl2) || iColumn >= _countof(MyComputerSFHeader))
|
||||
return E_INVALIDARG;
|
||||
|
||||
CHAR* pszDrive1 = _ILGetDataPointer(pidl1)->u.drive.szDriveName;
|
||||
CHAR* pszDrive2 = _ILGetDataPointer(pidl2)->u.drive.szDriveName;
|
||||
|
||||
int result;
|
||||
switch(LOWORD(lParam))
|
||||
switch (MyComputerSFHeader[iColumn].colnameid)
|
||||
{
|
||||
case 0: /* name */
|
||||
case IDS_SHV_COLUMN_NAME:
|
||||
{
|
||||
result = stricmp(pszDrive1, pszDrive2);
|
||||
hres = MAKE_COMPARE_HRESULT(result);
|
||||
break;
|
||||
}
|
||||
case 1: /* Type */
|
||||
case IDS_SHV_COLUMN_TYPE:
|
||||
{
|
||||
/* We want to return immediately because SHELL32_CompareDetails also compares children. */
|
||||
return SHELL32_CompareDetails(this, lParam, pidl1, pidl2);
|
||||
}
|
||||
case 2: /* Size */
|
||||
case 3: /* Size Available */
|
||||
case IDS_SHV_COLUMN_DISK_CAPACITY:
|
||||
case IDS_SHV_COLUMN_DISK_AVAILABLE:
|
||||
{
|
||||
ULARGE_INTEGER Drive1Available, Drive1Total, Drive2Available, Drive2Total;
|
||||
|
||||
|
@ -796,11 +795,10 @@ HRESULT WINAPI CDrivesFolder::CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1
|
|||
hres = MAKE_COMPARE_HRESULT(Diff.QuadPart);
|
||||
break;
|
||||
}
|
||||
case 4: /* comments */
|
||||
case IDS_SHV_COLUMN_COMMENTS:
|
||||
hres = MAKE_COMPARE_HRESULT(0);
|
||||
break;
|
||||
default:
|
||||
return E_INVALIDARG;
|
||||
DEFAULT_UNREACHABLE;
|
||||
}
|
||||
|
||||
if (HRESULT_CODE(hres) == 0)
|
||||
|
@ -1117,7 +1115,7 @@ HRESULT WINAPI CDrivesFolder::GetDefaultColumnState(UINT iColumn, DWORD * pcsFla
|
|||
{
|
||||
TRACE ("(%p)\n", this);
|
||||
|
||||
if (!pcsFlags || iColumn >= MYCOMPUTERSHELLVIEWCOLUMNS)
|
||||
if (!pcsFlags || iColumn >= _countof(MyComputerSFHeader))
|
||||
return E_INVALIDARG;
|
||||
*pcsFlags = MyComputerSFHeader[iColumn].pcsFlags;
|
||||
return S_OK;
|
||||
|
@ -1135,7 +1133,7 @@ HRESULT WINAPI CDrivesFolder::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, S
|
|||
|
||||
TRACE ("(%p)->(%p %i %p)\n", this, pidl, iColumn, psd);
|
||||
|
||||
if (!psd || iColumn >= MYCOMPUTERSHELLVIEWCOLUMNS)
|
||||
if (!psd || iColumn >= _countof(MyComputerSFHeader))
|
||||
return E_INVALIDARG;
|
||||
|
||||
if (!pidl)
|
||||
|
@ -1146,7 +1144,18 @@ HRESULT WINAPI CDrivesFolder::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, S
|
|||
}
|
||||
else if (!_ILIsDrive(pidl))
|
||||
{
|
||||
return m_regFolder->GetDetailsOf(pidl, iColumn, psd);
|
||||
switch (MyComputerSFHeader[iColumn].colnameid)
|
||||
{
|
||||
case IDS_SHV_COLUMN_NAME:
|
||||
case IDS_SHV_COLUMN_TYPE:
|
||||
return m_regFolder->GetDetailsOf(pidl, iColumn, psd);
|
||||
case IDS_SHV_COLUMN_DISK_CAPACITY:
|
||||
case IDS_SHV_COLUMN_DISK_AVAILABLE:
|
||||
return SHSetStrRet(&psd->str, ""); /* blank col */
|
||||
case IDS_SHV_COLUMN_COMMENTS:
|
||||
return m_regFolder->GetDetailsOf(pidl, 2, psd); /* 2 = comments */
|
||||
DEFAULT_UNREACHABLE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1156,19 +1165,19 @@ HRESULT WINAPI CDrivesFolder::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, S
|
|||
if (DriveType > DRIVE_RAMDISK)
|
||||
DriveType = DRIVE_FIXED;
|
||||
|
||||
switch (iColumn)
|
||||
switch (MyComputerSFHeader[iColumn].colnameid)
|
||||
{
|
||||
case 0: /* name */
|
||||
case IDS_SHV_COLUMN_NAME:
|
||||
hr = GetDisplayNameOf(pidl, SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
|
||||
break;
|
||||
case 1: /* type */
|
||||
case IDS_SHV_COLUMN_TYPE:
|
||||
if (DriveType == DRIVE_REMOVABLE && !IsDriveFloppyA(pszDrive))
|
||||
hr = SHSetStrRet(&psd->str, IDS_DRIVE_REMOVABLE);
|
||||
else
|
||||
hr = SHSetStrRet(&psd->str, iDriveTypeIds[DriveType]);
|
||||
break;
|
||||
case 2: /* total size */
|
||||
case 3: /* free size */
|
||||
case IDS_SHV_COLUMN_DISK_CAPACITY:
|
||||
case IDS_SHV_COLUMN_DISK_AVAILABLE:
|
||||
psd->str.cStr[0] = 0x00;
|
||||
psd->str.uType = STRRET_CSTR;
|
||||
if (GetVolumeInformationA(pszDrive, NULL, 0, NULL, NULL, NULL, NULL, 0))
|
||||
|
@ -1181,9 +1190,10 @@ HRESULT WINAPI CDrivesFolder::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, S
|
|||
}
|
||||
hr = S_OK;
|
||||
break;
|
||||
case 4: /* FIXME: comments */
|
||||
hr = SHSetStrRet(&psd->str, "");
|
||||
case IDS_SHV_COLUMN_COMMENTS:
|
||||
hr = SHSetStrRet(&psd->str, ""); /* FIXME: comments */
|
||||
break;
|
||||
DEFAULT_UNREACHABLE;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue