Community
Participate
Working Groups
Created attachment 180181 [details] snippet To reproduce: - Run attached snippet - double click an table-item
- TableRow gets over state by mouse - Items are disposed by the response-code - table visibility is set to false by response-code - as a result, widget._beforeDisappear removes the rows over state. - table tries to re-render the item formerly associated with the TableRow -> Crash - Table.updateRows would update the associations between TableRows and TableItems, but is called too late. (See TableLCAUtil.writeItemMetrics).
Created attachment 180182 [details] proposed fix
The patch has been applied to the 1.3 maintenance branch, it will be part of the 1.3.2 service release.
Created attachment 189415 [details] Another fix When the TableItem is disposed, the Table.js#_removeItem is called, but the internal property _itemCount left unchanged. Thus, for a short period if time we have out of sync between the actual TableItem instances and the internal property _itemCount. One possible solution could be to decrement the _itemCount and update the rows in Table.js#_removeItem, but in case, disposing of multiple items will trigger the _updateRows multiple times, which will make the performance worse. The attached patch writes itemCount in the first position in TableLCA#renderChanges, ensuring that the sequential write operations will work on updated _itemCount property.
Applied ivans patch to CVS HEAD. Its the better patch because its solves the cause of the problem instead of fighting the symptoms.