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
}
    
    /**
     * Returns the index of the item currently at the top of the viewable area.
     * <p>
     * Default implementation returns -1.
     * </p>
     * @return index, -1 for none
     * @since 3.3
     */
    protected int listGetTopIndex(){
    	return -1;
    }
    /**
     * Sets the index of the item to be at the top of the viewable area.
     * <p>
     * Default implementation does nothing.
     * </p>
     * @param index the given index. -1 for none.  index will always refer to a valid index.
     * @since 3.3
     */
    protected void listSetTopIndex(int index) {
    }
    
    /**
     * Removes the given elements from this list viewer.
     *
     * @param elements the elements to remove
     */
    private void internalRemove(final Object[] elements) {