rem: WMListItem *item;
context: WMRemoveListItem(WMList *lPtr, int row){    WMListItem *item;    int topItem = lPtr->topItem;    int selNotify = 0;    CHECK_CLASS(lPtr, WC_List);        if (row < 0 || row >= WMGetBagItemCount(lPtr->items))	return;    if (lPtr->selectedItem == row) {        lPtr->selectedItem = -1;        selNotify = 1;    } else if (lPtr->selectedItem > row) {        lPtr->selectedItem--;    }    if (row <= lPtr->topItem+lPtr->fullFitLines+lPtr->flags.dontFitAll)	lPtr->topItem--;    if (lPtr->topItem < 0)	lPtr->topItem = 0;    item = WMGetFromBag(lPtr->items, row);    if (item->text)	wfree(item->text);    wfree(item);    WMDeleteFromBag(lPtr->items, row);    if (!lPtr->idleID) {	lPtr->idleID = WMAddIdleHandler((WMCallback*)updateScroller, lPtr);    }    if (lPtr->topItem != topItem)    	WMPostNotificationName(WMListDidScrollNotification, lPtr, NULL);    if (selNotify)        WMPostNotificationName(WMListSelectionDidChangeNotification, lPtr,                               (void*)((int)lPtr->selectedItem));}