Bug 92835 [Viewers] retrieving projects from CVS creates duplicate resources in Navigator
observed in I0420 and I0426, did not happen in M6 happens on solaris-motif, aix, and hpux, but NOT linux-motif or others I could have the wrong component here, but I guessed UI since WorkbenchContentProvider seems to ultimately populate the Navigator view. - start a new eclipse - show the CVS Repositories view - connect to dev.eclipse.org - start retrieving the org.eclipse.swt and org.eclipse.swt.motif.linux.x86 projects - click "Run In Background" and switch to the Navigator view - the two projects will appear as they're retrieved from CVS (fine), but then at the end of Building there will be two duplicate projects added to the Navigator My initial thought was that this must be a motif Tree bug, but I don't think it is because: -> the problem does not happen on linux-motif -> I inserted several println's in Tree and TreeItem apis, ran through the scenario, and noted that twice as many TreeItem creation apis are being invoked in the unix cases compared to linux-motif, so there seems to be some platform differentiation happening outside of swt
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
if (parent != null) {
            if (equals(parent, getRoot()))
                return super.getRawChildren(parent);
            ITreeContentProvider cp = (ITreeContentProvider) getContentProvider();
            if (cp != null) {
                Object[] result = cp.getChildren(parent);
                if (result != null)
                    return result;
            }
        }
        return new Object[0];
    }
    /**
     * Returns all selected items for the given SWT control.
     * 
     * @param control
     *           the control
     * @return the list of selected items
     */
    protected abstract Item[] getSelection(Control control);
    
    protected List getSelectionFromWidget() {
        Widget[] items = getSelection(getControl());
        ArrayList list = new ArrayList(items.length);
        for (int i = 0; i < items.length; i++) {
            Widget item = items[i];
            Object e = item.getData();
            if (e != null)
                list.add(e);
        }