rem: if (!item) { oldItem = item; return; }
context: listCallback(void *self, void *clientData){    WMBrowser *bPtr = (WMBrowser*)clientData;    WMList *lPtr = (WMList*)self;    WMListItem *item;    static WMListItem *oldItem = NULL;    int i;    item = WMGetListSelectedItem(lPtr);    if (!item) {        oldItem = item;        return;    }    if (oldItem != item) {        for (i=0; i<bPtr->columnCount; i++) {            if (lPtr == bPtr->columns[i])                break;        }        assert(i<bPtr->columnCount);	bPtr->selectedColumn = i;        /* columns at right must be cleared */        removeColumn(bPtr, i+1);        /* open directory */        if (item->isBranch) {            WMAddBrowserColumn(bPtr);        }        if (bPtr->usedColumnCount < bPtr->maxVisibleColumns)            i = 0;        else            i = bPtr->usedColumnCount-bPtr->maxVisibleColumns;        scrollToColumn(bPtr, i, True);	if (item->isBranch) {            loadColumn(bPtr, bPtr->usedColumnCount-1);	}    }    /* call callback for click */    if (bPtr->action)	(*bPtr->action)(bPtr, bPtr->clientData);    oldItem = item;}