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
*  
     * @param string the string to add
     * @param index position to insert the string into
     */
    protected abstract void listAdd(String string, int index);
    /**
     * Sets the text of the item at the given index in the underlying widget.
     * 
     * @param index index to modify
     * @param string new text
     */
    protected abstract void listSetItem(int index, String string);
    /**
     * Returns the zero-relative indices of the items which are currently
     * selected in the underlying widget.  The array is empty if no items are selected.
     * <p>
     * Note: This is not the actual structure used by the receiver
     * to maintain its selection, so modifying the array will
     * not affect the receiver. 
     * </p>
     * @return the array of indices of the selected items
     */
    protected abstract int[] listGetSelectionIndices();
    /**
     * Returns the number of items contained in the underlying widget.
     *
     * @return the number of items
     */
    protected abstract int listGetItemCount();
    /**