comctl32/listbox: Move the item data removal into a separate function.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Gabriel Ivăncescu 2019-02-20 12:04:59 +00:00 committed by Alexandre Julliard
parent bd2cc1342b
commit e98d4b4502
1 changed files with 10 additions and 9 deletions

View File

@ -200,6 +200,15 @@ static void insert_item_data(LB_DESCR *descr, UINT index, WCHAR *str, ULONG_PTR
item->selected = FALSE;
}
static void remove_item_data(LB_DESCR *descr, UINT index)
{
LB_ITEMDATA *item;
item = descr->items + index;
if (index < descr->nb_items)
memmove(item, item + 1, (descr->nb_items - index) * sizeof(LB_ITEMDATA));
}
/***********************************************************************
* LISTBOX_GetCurrentPageSize
*
@ -1699,8 +1708,6 @@ static void LISTBOX_DeleteItem( LB_DESCR *descr, INT index )
*/
static LRESULT LISTBOX_RemoveItem( LB_DESCR *descr, INT index )
{
LB_ITEMDATA *item;
if ((index < 0) || (index >= descr->nb_items)) return LB_ERR;
/* We need to invalidate the original rect instead of the updated one. */
@ -1713,15 +1720,9 @@ static LRESULT LISTBOX_RemoveItem( LB_DESCR *descr, INT index )
}
descr->nb_items--;
LISTBOX_DeleteItem( descr, index );
remove_item_data(descr, index);
/* Remove the item */
item = &descr->items[index];
if (index < descr->nb_items)
RtlMoveMemory( item, item + 1,
(descr->nb_items - index) * sizeof(LB_ITEMDATA) );
if (descr->anchor_item == descr->nb_items) descr->anchor_item--;
resize_storage(descr, descr->nb_items);
/* Repaint the items */