mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 15:52:57 +00:00
[RAPPS] Set header style when sorting by column
This commit is contained in:
parent
f0c7f862d4
commit
b698067e35
1 changed files with 38 additions and 6 deletions
|
@ -388,14 +388,17 @@ class CAppsListView :
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOL bHasAllChecked;
|
BOOL bHasAllChecked;
|
||||||
BOOL bAscending;
|
BOOL bIsAscending;
|
||||||
BOOL bHasCheckboxes;
|
BOOL bHasCheckboxes;
|
||||||
|
|
||||||
|
INT nLastHeaderID;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CAppsListView() :
|
CAppsListView() :
|
||||||
bHasAllChecked(FALSE),
|
bHasAllChecked(FALSE),
|
||||||
bAscending(TRUE),
|
bIsAscending(TRUE),
|
||||||
bHasCheckboxes(FALSE)
|
bHasCheckboxes(FALSE),
|
||||||
|
nLastHeaderID(-1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -415,11 +418,40 @@ public:
|
||||||
|
|
||||||
VOID ColumnClick(LPNMLISTVIEW pnmv)
|
VOID ColumnClick(LPNMLISTVIEW pnmv)
|
||||||
{
|
{
|
||||||
SortContext ctx = {this, pnmv->iSubItem};
|
HWND hHeader;
|
||||||
|
HDITEMW hColumn;
|
||||||
|
INT nHeaderID = pnmv->iSubItem;
|
||||||
|
|
||||||
|
if ((GetWindowLongPtr(GWL_STYLE) & ~LVS_NOSORTHEADER) == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
hHeader = (HWND) SendMessage(LVM_GETHEADER, 0, 0);
|
||||||
|
ZeroMemory(&hColumn, sizeof(hColumn));
|
||||||
|
|
||||||
|
/* If the sorting column changed, remove the sorting style from the old column */
|
||||||
|
if ((nLastHeaderID != -1) && (nLastHeaderID != nHeaderID))
|
||||||
|
{
|
||||||
|
hColumn.mask = HDI_FORMAT;
|
||||||
|
Header_GetItem(hHeader, nLastHeaderID, &hColumn);
|
||||||
|
hColumn.fmt &= ~(HDF_SORTUP | HDF_SORTDOWN);
|
||||||
|
Header_SetItem(hHeader, nLastHeaderID, &hColumn);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the sorting style to the new column */
|
||||||
|
hColumn.mask = HDI_FORMAT;
|
||||||
|
Header_GetItem(hHeader, nHeaderID, &hColumn);
|
||||||
|
|
||||||
|
hColumn.fmt &= (bIsAscending ? ~HDF_SORTDOWN : ~HDF_SORTUP);
|
||||||
|
hColumn.fmt |= (bIsAscending ? HDF_SORTUP : HDF_SORTDOWN);
|
||||||
|
Header_SetItem(hHeader, nHeaderID, &hColumn);
|
||||||
|
|
||||||
|
/* Sort the list, using the current values of nHeaderID and bIsAscending */
|
||||||
|
SortContext ctx = {this, nHeaderID};
|
||||||
SortItems(s_CompareFunc, &ctx);
|
SortItems(s_CompareFunc, &ctx);
|
||||||
|
|
||||||
bAscending = !bAscending;
|
/* Save new values */
|
||||||
|
nLastHeaderID = nHeaderID;
|
||||||
|
bIsAscending = !bIsAscending;
|
||||||
}
|
}
|
||||||
|
|
||||||
PVOID GetLParam(INT Index)
|
PVOID GetLParam(INT Index)
|
||||||
|
@ -507,7 +539,7 @@ public:
|
||||||
GetItemText(Index, iSubItem, Item2.GetBuffer(MAX_STR_LEN), MAX_STR_LEN);
|
GetItemText(Index, iSubItem, Item2.GetBuffer(MAX_STR_LEN), MAX_STR_LEN);
|
||||||
Item2.ReleaseBuffer();
|
Item2.ReleaseBuffer();
|
||||||
|
|
||||||
if (bAscending)
|
if (bIsAscending)
|
||||||
return Item2 == Item1;
|
return Item2 == Item1;
|
||||||
else
|
else
|
||||||
return Item1 == Item2;
|
return Item1 == Item2;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue