150149 [quick assist] Surround with template "flickers"
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/template/contentassist/SurroundWithTemplateProposal.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/template/contentassist/SurroundWithTemplateProposal.java
index cf03160..2bc0750 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/template/contentassist/SurroundWithTemplateProposal.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/template/contentassist/SurroundWithTemplateProposal.java
@@ -33,7 +33,9 @@
 import org.eclipse.jface.text.DocumentEvent;
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.IRewriteTarget;
 import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.ITextViewerExtension;
 import org.eclipse.jface.text.Region;
 import org.eclipse.jface.text.templates.GlobalTemplateVariables;
 import org.eclipse.jface.text.templates.Template;
@@ -214,6 +216,7 @@
 	 */
 	public void apply(ITextViewer viewer, char trigger, int stateMask, int offset) {
 		try {
+			setRedraw(viewer, false);
 			IDocument document= viewer.getDocument();
 			CompilationUnitContext context= createNewContext(document);
 			
@@ -232,9 +235,19 @@
 			handleException(viewer, e, fRegion);
 		} catch (CoreException e) {
 			handleException(viewer, e, fRegion);
+		} finally {
+			setRedraw(viewer, true);
 		}
 	}
 	
+	private void setRedraw(ITextViewer viewer, boolean redraw) {
+		if (viewer instanceof ITextViewerExtension) {
+			ITextViewerExtension extension= (ITextViewerExtension) viewer;
+			IRewriteTarget target= extension.getRewriteTarget();
+			target.setRedraw(redraw);
+		}
+    }
+
 	public Point getSelection(IDocument document) {
 		if (fSelectedRegion != null) {
 			return new Point(fSelectedRegion.getOffset(), fSelectedRegion.getLength());