Bug 552352 - Using SWAP in Compare editor loses changes and dirty status
- Back-port fix to 4.15+ branch

Change-Id: Iab835c01242ede0a481d17cafd5f603746695317
Signed-off-by: Niraj Modi <niraj.modi@in.ibm.com>
diff --git a/bundles/org.eclipse.compare/META-INF/MANIFEST.MF b/bundles/org.eclipse.compare/META-INF/MANIFEST.MF
index 7a97985..b30ee1f 100644
--- a/bundles/org.eclipse.compare/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.compare/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.compare; singleton:=true
-Bundle-Version: 3.7.900.qualifier
+Bundle-Version: 3.7.901.qualifier
 Bundle-Activator: org.eclipse.compare.internal.CompareUIPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
index cab519f..daa89d9 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2018 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -914,6 +914,17 @@
 			fSwitchLeftAndRight = new Action() {
 				@Override
 				public void run() {
+					/*
+					 * Bug 552352: When comparing .txt files with corresponding .txt file editors
+					 * closed and user modifies the content of one of the .txt file in the compare
+					 * view and the compare state becomes 'dirty' and if followed by a 'Swap'
+					 * action, modifications get lost. This data loss is considered a severe
+					 * problem, so to avoid this modified data loss in this scenario, show a
+					 * confirmation dialog to 'save' the file before swapping and let user decide
+					 * and take a call on this. Note: Issue not seen with .java & .properties files.
+					 */
+					doSave(null, getInput());
+
 					IPreferenceStore preferences = getCompareConfiguration().getPreferenceStore();
 					preferences.setValue(ComparePreferencePage.SWAPPED, !getCompareConfiguration().isMirrored());
 					if (preferences instanceof IPersistentPreferenceStore) {
diff --git a/bundles/org.eclipse.compare/pom.xml b/bundles/org.eclipse.compare/pom.xml
index d947626..723b635 100644
--- a/bundles/org.eclipse.compare/pom.xml
+++ b/bundles/org.eclipse.compare/pom.xml
@@ -19,6 +19,6 @@
   </parent>
   <groupId>org.eclipse.compare</groupId>
   <artifactId>org.eclipse.compare</artifactId>
-  <version>3.7.900-SNAPSHOT</version>
+  <version>3.7.901-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>