Bug 121797 [Viewers] internalRefresh(Object)
AbstractListViewer.internalRefresh(Object) does not wrap calls to setRedraw on its org.eclipse.swt.widgets.List within a try-finally block. There are many methods between the two calls to setRedraw that subclasses could throw Exceptions on which could cause setRedraw(true) not to be called. The most likely is the call to the LabelProvider through AbstractLabelViewer.getLabelProviderText(ILabelProvider, Object)
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractListViewer.java
private void insertItem(ILabelProvider labelProvider, Object element, int index) {
        listAdd(getLabelProviderText(labelProvider, element), index);
		listMap.add(index, element);
		mapElement(element, getControl()); 
    }
    
    /**
	 * Inserts the given element into this list viewer at the given position.
	 * If this viewer has a sorter, the position is ignored and the element is
	 * inserted at the correct position in the sort order.
	 * <p>
	 * This method should be called (by the content provider) when elements have
	 * been added to the model, in order to cause the viewer to accurately
	 * reflect the model. This method only affects the viewer, not the model.
	 * </p>
	 * 
	 * @param element
	 *            the element
	 * @param position
	 *            a 0-based position relative to the model, or -1 to indicate
	 *            the last position
	 * @since 3.3
	 */
    public void insert(Object element, int position) {
    	if (getComparator() != null || hasFilters()) {
    		add(element);
    		return;
    	}
    	
    	insertItem((ILabelProvider) getLabelProvider(), element, position);