rem: repaintTable(table, 0, 0, W_VIEW_WIDTH(table->tableView), rect.size.height);
add: if (table->delegate && table->delegate->numberOfRows) { int rows;  rows = (*table->delegate->numberOfRows)(table->delegate, table);  if (rows != table->rows) { table->rows = rows; handleResize(table->delegate, table->view); } else { repaintTable(table); } }
context: void WMReloadTableView(WMTableView *table){    WMRect rect = WMGetScrollViewVisibleRect(table->scrollView);    if (table->editingRow >= 0)	stopRowEdit(table, table->editingRow);        /* when this is called, nothing in the table can be assumed to be     * like the last time we accessed it (ie, rows might have disappeared) */    WMEmptyArray(table->selectedRows);        if (table->clickedRow >= 0) {	table->clickedRow = -1;	if (table->action)	    (*table->action)(table, table->clientData);	WMPostNotificationName(WMTableViewSelectionDidChangeNotification,			       table, NULL);    }    repaintTable(table, 0, 0, 		 W_VIEW_WIDTH(table->tableView), rect.size.height);}