Update ordering on insertion of an item.

This commit is contained in:
Robert Shearman 2003-05-22 03:34:54 +00:00 committed by Alexandre Julliard
parent 88090b47a6
commit f644c787ee

View file

@ -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);