Bug 207846 [Viewers] Virtual TableViewer setSelection() does not work properly
Build ID: 3.3.1.1 Steps To Reproduce: 1. Create a virtual TableViewer 2. Add elements to the table 3. call setSelection() on an item that is not visible The selected item will be revealed. The API contract states that for the selection to be revealed, you must call setSelection(item, true). More information: I'm setting this to blocker because I have code that extends TableViewer that allows me to keep track of a virtual selection and when new elements are added to the table as the user scrolls that are part of the virtual selection, I update the underlying actual selection. This causes the table to jump back to the start of the selection making the table unusable. I have no workaround for this problem, and thus it's blocking me from delivering required functionality to my customers. Looking at the code, it appears that the virtual table viewer calls setSelection() on the underlying SWT Table which in turn calls showIndex() - whereas a non virtual table viewer calls Table select() which does not call showIndex(). Can the virtual table use select() instead of setSelection()?
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTableViewer.java
indices[count++] = i;
					virtualElements.remove(item.getData());
					if (firstItem == null) {
						firstItem = item;
					}
				}
			}
		} else {
			if (count != list.size()) {
				
				
				for (int i = 0; i < virtualManager.cachedElements.length; i++) {
					Object element = virtualManager.cachedElements[i];
					if (virtualElements.contains(element)) {
						Item item = doGetItem(i);
						item.getText();
						indices[count++] = i;
						virtualElements.remove(element);
						if (firstItem == null) {
							firstItem = item;
						}
					}
				}
			}
		}
		if (count < size) {
			System.arraycopy(indices, 0, indices = new int[count], 0, count);
		}
		doSetSelection(indices);
		if (reveal && firstItem != null) {