Update ordering on insertion of an item.
This commit is contained in:
parent
88090b47a6
commit
f644c787ee
|
@ -845,7 +845,7 @@ HEADER_InsertItemA (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
HDITEMA *phdi = (HDITEMA*)lParam;
|
||||
INT nItem = (INT)wParam;
|
||||
HEADER_ITEM *lpItem;
|
||||
INT len;
|
||||
INT len, i, iOrder;
|
||||
|
||||
if ((phdi == NULL) || (nItem < 0))
|
||||
return -1;
|
||||
|
@ -853,6 +853,8 @@ HEADER_InsertItemA (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
if (nItem > infoPtr->uNumItem)
|
||||
nItem = infoPtr->uNumItem;
|
||||
|
||||
iOrder = (phdi->mask & HDI_ORDER) ? phdi->iOrder : nItem;
|
||||
|
||||
if (infoPtr->uNumItem == 0) {
|
||||
infoPtr->items = COMCTL32_Alloc (sizeof (HEADER_ITEM));
|
||||
infoPtr->uNumItem++;
|
||||
|
@ -884,6 +886,12 @@ HEADER_InsertItemA (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
COMCTL32_Free (oldItems);
|
||||
}
|
||||
|
||||
for (i=0; i < infoPtr->uNumItem; i++)
|
||||
{
|
||||
if (infoPtr->items[i].iOrder >= iOrder)
|
||||
infoPtr->items[i].iOrder++;
|
||||
}
|
||||
|
||||
lpItem = &infoPtr->items[nItem];
|
||||
lpItem->bDown = FALSE;
|
||||
|
||||
|
@ -921,13 +929,7 @@ HEADER_InsertItemA (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
if (phdi->mask & HDI_IMAGE)
|
||||
lpItem->iImage = phdi->iImage;
|
||||
|
||||
if (phdi->mask & HDI_ORDER)
|
||||
{
|
||||
lpItem->iOrder = phdi->iOrder;
|
||||
}
|
||||
else
|
||||
lpItem->iOrder=nItem;
|
||||
|
||||
lpItem->iOrder = iOrder;
|
||||
|
||||
HEADER_SetItemBounds (hwnd);
|
||||
|
||||
|
@ -944,7 +946,7 @@ HEADER_InsertItemW (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
HDITEMW *phdi = (HDITEMW*)lParam;
|
||||
INT nItem = (INT)wParam;
|
||||
HEADER_ITEM *lpItem;
|
||||
INT len;
|
||||
INT len, i, iOrder;
|
||||
|
||||
if ((phdi == NULL) || (nItem < 0))
|
||||
return -1;
|
||||
|
@ -952,6 +954,8 @@ HEADER_InsertItemW (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
if (nItem > infoPtr->uNumItem)
|
||||
nItem = infoPtr->uNumItem;
|
||||
|
||||
iOrder = (phdi->mask & HDI_ORDER) ? phdi->iOrder : nItem;
|
||||
|
||||
if (infoPtr->uNumItem == 0) {
|
||||
infoPtr->items = COMCTL32_Alloc (sizeof (HEADER_ITEM));
|
||||
infoPtr->uNumItem++;
|
||||
|
@ -983,6 +987,12 @@ HEADER_InsertItemW (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
COMCTL32_Free (oldItems);
|
||||
}
|
||||
|
||||
for (i=0; i < infoPtr->uNumItem; i++)
|
||||
{
|
||||
if (infoPtr->items[i].iOrder >= iOrder)
|
||||
infoPtr->items[i].iOrder++;
|
||||
}
|
||||
|
||||
lpItem = &infoPtr->items[nItem];
|
||||
lpItem->bDown = FALSE;
|
||||
|
||||
|
@ -1021,12 +1031,7 @@ HEADER_InsertItemW (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
if (phdi->mask & HDI_IMAGE)
|
||||
lpItem->iImage = phdi->iImage;
|
||||
|
||||
if (phdi->mask & HDI_ORDER)
|
||||
{
|
||||
lpItem->iOrder = phdi->iOrder;
|
||||
}
|
||||
else
|
||||
lpItem->iOrder = nItem;
|
||||
lpItem->iOrder = iOrder;
|
||||
|
||||
HEADER_SetItemBounds (hwnd);
|
||||
|
||||
|
|
Loading…
Reference in New Issue