Fixed bug 405290: Undo-ing to the point where the compare editor is not dirty leaves you with no easy way to recalculate diffs
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
index fcdc3ed..e0ac759 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
@@ -2998,7 +2998,7 @@
 	 */
 	private void documentChanged(DocumentEvent e, boolean dirty) {
 		
-		IDocument doc= e.getDocument();
+		final IDocument doc= e.getDocument();
 		
 		if (doc == fLeft.getSourceViewer().getDocument()) {
 			setLeftDirty(dirty);
@@ -3007,8 +3007,19 @@
 		}
 		if (!isLeftDirty() && !isRightDirty()) {
 			fRedoDiff = false;
+			new UIJob(CompareMessages.DocumentMerger_0) {
+				public IStatus runInUIThread(IProgressMonitor monitor) {
+					if (!getControl().isDisposed()) {
+						doDiff();
+						invalidateLines();
+						updateLines(doc);
+					}
+					return Status.OK_STATUS;
+				}
+			}.schedule();
+		} else {
+			updateLines(doc);
 		}
-		updateLines(doc);
 	}
 	
 	/*