mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +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},
|
{IDS_SHV_COLUMN_COMMENTS, SHCOLSTATE_TYPE_STR, LVCFMT_LEFT, 10},
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MYCOMPUTERSHELLVIEWCOLUMNS 5
|
|
||||||
|
|
||||||
static const DWORD dwComputerAttributes =
|
static const DWORD dwComputerAttributes =
|
||||||
SFGAO_CANRENAME | SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_DROPTARGET |
|
SFGAO_CANRENAME | SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_DROPTARGET |
|
||||||
SFGAO_FILESYSANCESTOR | SFGAO_FOLDER | SFGAO_HASSUBFOLDER;
|
SFGAO_FILESYSANCESTOR | SFGAO_FOLDER | SFGAO_HASSUBFOLDER;
|
||||||
|
@ -752,28 +750,29 @@ HRESULT WINAPI CDrivesFolder::CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1
|
||||||
if (_ILIsSpecialFolder(pidl1) || _ILIsSpecialFolder(pidl2))
|
if (_ILIsSpecialFolder(pidl1) || _ILIsSpecialFolder(pidl2))
|
||||||
return m_regFolder->CompareIDs(lParam, pidl1, 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;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
CHAR* pszDrive1 = _ILGetDataPointer(pidl1)->u.drive.szDriveName;
|
CHAR* pszDrive1 = _ILGetDataPointer(pidl1)->u.drive.szDriveName;
|
||||||
CHAR* pszDrive2 = _ILGetDataPointer(pidl2)->u.drive.szDriveName;
|
CHAR* pszDrive2 = _ILGetDataPointer(pidl2)->u.drive.szDriveName;
|
||||||
|
|
||||||
int result;
|
int result;
|
||||||
switch(LOWORD(lParam))
|
switch (MyComputerSFHeader[iColumn].colnameid)
|
||||||
{
|
{
|
||||||
case 0: /* name */
|
case IDS_SHV_COLUMN_NAME:
|
||||||
{
|
{
|
||||||
result = stricmp(pszDrive1, pszDrive2);
|
result = stricmp(pszDrive1, pszDrive2);
|
||||||
hres = MAKE_COMPARE_HRESULT(result);
|
hres = MAKE_COMPARE_HRESULT(result);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 1: /* Type */
|
case IDS_SHV_COLUMN_TYPE:
|
||||||
{
|
{
|
||||||
/* We want to return immediately because SHELL32_CompareDetails also compares children. */
|
/* We want to return immediately because SHELL32_CompareDetails also compares children. */
|
||||||
return SHELL32_CompareDetails(this, lParam, pidl1, pidl2);
|
return SHELL32_CompareDetails(this, lParam, pidl1, pidl2);
|
||||||
}
|
}
|
||||||
case 2: /* Size */
|
case IDS_SHV_COLUMN_DISK_CAPACITY:
|
||||||
case 3: /* Size Available */
|
case IDS_SHV_COLUMN_DISK_AVAILABLE:
|
||||||
{
|
{
|
||||||
ULARGE_INTEGER Drive1Available, Drive1Total, Drive2Available, Drive2Total;
|
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);
|
hres = MAKE_COMPARE_HRESULT(Diff.QuadPart);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 4: /* comments */
|
case IDS_SHV_COLUMN_COMMENTS:
|
||||||
hres = MAKE_COMPARE_HRESULT(0);
|
hres = MAKE_COMPARE_HRESULT(0);
|
||||||
break;
|
break;
|
||||||
default:
|
DEFAULT_UNREACHABLE;
|
||||||
return E_INVALIDARG;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HRESULT_CODE(hres) == 0)
|
if (HRESULT_CODE(hres) == 0)
|
||||||
|
@ -1117,7 +1115,7 @@ HRESULT WINAPI CDrivesFolder::GetDefaultColumnState(UINT iColumn, DWORD * pcsFla
|
||||||
{
|
{
|
||||||
TRACE ("(%p)\n", this);
|
TRACE ("(%p)\n", this);
|
||||||
|
|
||||||
if (!pcsFlags || iColumn >= MYCOMPUTERSHELLVIEWCOLUMNS)
|
if (!pcsFlags || iColumn >= _countof(MyComputerSFHeader))
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
*pcsFlags = MyComputerSFHeader[iColumn].pcsFlags;
|
*pcsFlags = MyComputerSFHeader[iColumn].pcsFlags;
|
||||||
return S_OK;
|
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);
|
TRACE ("(%p)->(%p %i %p)\n", this, pidl, iColumn, psd);
|
||||||
|
|
||||||
if (!psd || iColumn >= MYCOMPUTERSHELLVIEWCOLUMNS)
|
if (!psd || iColumn >= _countof(MyComputerSFHeader))
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
if (!pidl)
|
if (!pidl)
|
||||||
|
@ -1146,7 +1144,18 @@ HRESULT WINAPI CDrivesFolder::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, S
|
||||||
}
|
}
|
||||||
else if (!_ILIsDrive(pidl))
|
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
|
else
|
||||||
{
|
{
|
||||||
|
@ -1156,19 +1165,19 @@ HRESULT WINAPI CDrivesFolder::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, S
|
||||||
if (DriveType > DRIVE_RAMDISK)
|
if (DriveType > DRIVE_RAMDISK)
|
||||||
DriveType = DRIVE_FIXED;
|
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);
|
hr = GetDisplayNameOf(pidl, SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
|
||||||
break;
|
break;
|
||||||
case 1: /* type */
|
case IDS_SHV_COLUMN_TYPE:
|
||||||
if (DriveType == DRIVE_REMOVABLE && !IsDriveFloppyA(pszDrive))
|
if (DriveType == DRIVE_REMOVABLE && !IsDriveFloppyA(pszDrive))
|
||||||
hr = SHSetStrRet(&psd->str, IDS_DRIVE_REMOVABLE);
|
hr = SHSetStrRet(&psd->str, IDS_DRIVE_REMOVABLE);
|
||||||
else
|
else
|
||||||
hr = SHSetStrRet(&psd->str, iDriveTypeIds[DriveType]);
|
hr = SHSetStrRet(&psd->str, iDriveTypeIds[DriveType]);
|
||||||
break;
|
break;
|
||||||
case 2: /* total size */
|
case IDS_SHV_COLUMN_DISK_CAPACITY:
|
||||||
case 3: /* free size */
|
case IDS_SHV_COLUMN_DISK_AVAILABLE:
|
||||||
psd->str.cStr[0] = 0x00;
|
psd->str.cStr[0] = 0x00;
|
||||||
psd->str.uType = STRRET_CSTR;
|
psd->str.uType = STRRET_CSTR;
|
||||||
if (GetVolumeInformationA(pszDrive, NULL, 0, NULL, NULL, NULL, NULL, 0))
|
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;
|
hr = S_OK;
|
||||||
break;
|
break;
|
||||||
case 4: /* FIXME: comments */
|
case IDS_SHV_COLUMN_COMMENTS:
|
||||||
hr = SHSetStrRet(&psd->str, "");
|
hr = SHSetStrRet(&psd->str, ""); /* FIXME: comments */
|
||||||
break;
|
break;
|
||||||
|
DEFAULT_UNREACHABLE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue