Bug 211493 [Markers] [Markers] New Markers view slows down traversal in Package Explorer
I20071127-0800 Traversing over elements in the Package Explorer via Arrow_Down key is slowed down by the new Markers view. Steps: - select org.eclipse.jdt.doc.user (from CVS) - press Arrow_Right - press and hold Arrow_Down => selection moves slowly, gets faster after folders with many files have been passed I quickly profiled this and found that a lot of time is burned in org.eclipse.ui.internal.provisional.views.markers.CachedMarkerBuilder$1.run(IProgressMonitor) This is probably because ExtendedMarkersView.createPartControl(Composite) contains: ISelectionListener listener = getPageSelectionListener(); getSite().getPage().addSelectionListener(listener); listener.selectionChanged(getSite().getPage().getActivePart(), getSite().getPage().getSelection()); 1. => should not leak the listener when the view is disposed 2. => should not update when the Markers view is not visible 3. => should not use addSelectionListener() but addPostSelectionListener()
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/provisional/views/markers/ExtendedMarkersView.java
};
	}
	/**
	 * Return all of the markers in the current selection
	 * 
	 * @return Array of {@link IMarker}
	 */
	IMarker[] getSelectedMarkers() {
		ISelection selection = viewer.getSelection();
		if (selection instanceof IStructuredSelection) {
			IStructuredSelection structured = (IStructuredSelection) selection;
			Iterator elements = structured.iterator();
			Collection result = new ArrayList();
			while (elements.hasNext()) {
				MarkerItem next = (MarkerItem) elements.next();
				if (next.isConcrete())
					result.add(((MarkerEntry) next).getMarker());
			}
			if (result.isEmpty())
				return MarkerSupportInternalUtilities.EMPTY_MARKER_ARRAY;
			IMarker[] markers = new IMarker[result.size()];
			result.toArray(markers);
			return markers;
		}
		return MarkerSupportInternalUtilities.EMPTY_MARKER_ARRAY;
	}
	/**
	 * Return the sort direction.
	 * 
	 * @return boolean