Bug 97786 [Viewers] - Lazy Virtual Table View Test - duplicate items appear after delete
3.1 RC1, Win XP - open the Lazy Virtual Table View Test - Scroll down so that element 6110 is the top item - select item 6114 and delete it - select item 6118 and delete it - scroll up two items so that 6108 is the top item - scroll back down and notice duplicate elements at item 6128 and 6129 6126 6127 6128 6129 6128 6129 6130 6131 you might not get the exact same index for the duplicates - it may depend on the number of visible items, etc. But it is definitely reproducible. Resetting the input and trying again will show the problem, but the duplicate items appear later in the list (numbers 6132 and 6133 were duplicates after I reset input and repeated the steps). The location of the duplicates is the same if you open/close the view. ie. once you find the duplicates, you can reproduce consistently by opening/closing the view and following the same steps.
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewer.java
* This class is not intended to be subclassed outside the viewer framework. It
 * is designed to be instantiated with a pre-existing SWT table control and
 * configured with a domain-specific content provider, table label provider,
 * element filter (optional), and element sorter (optional).
 * </p>
 * <p>
 * Label providers for table viewers must implement either the
 * <code>ITableLabelProvider</code> or the <code>ILabelProvider</code> interface
 * (see <code>TableViewer.setLabelProvider</code> for more details).
 * </p>
 * <p>
 * As of 3.1 the TableViewer now supports the SWT.VIRTUAL flag. If the
 * underlying table is SWT.VIRTUAL, the content provider may implement {@link
 * ILazyContentProvider} instead of {@link IStructuredContentProvider} . Note
 * that in this case, the viewer does not support sorting or filtering. Also
 * note that in this case, the Widget based APIs may return null if the element
 * is not specified or not created yet.
 * </p>
 * <p>
 * Users of SWT.VIRTUAL should also avoid using getItems() from the Table within
 * the TreeViewer as this does not necessarily generate a callback for the
 * TreeViewer to populate the items. It also has the side effect of creating all
 * of the items thereby eliminating the performance improvements of SWT.VIRTUAL.
 * </p>
 * <p>
 * Users setting up an editable table with more than 1 column <b>have</b> to pass the
 * SWT.FULL_SELECTION style bit
 * </p>
 * 
 * @see SWT#VIRTUAL