diff options
-rw-r--r-- | bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java | 23 |
1 files changed, 15 insertions, 8 deletions
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 4f04b3f77..a5e82b2d0 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 @@ -315,6 +315,7 @@ public abstract class ContentMergeViewer extends ContentViewer private ResourceBundle fBundle; private final CompareConfiguration fCompareConfiguration; private IPropertyChangeListener fPropertyChangeListener; + private IPropertyChangeListener fPreferenceChangeListener; private ICompareInputChangeListener fCompareInputChangeListener; private ListenerList<IPropertyChangeListener> fListenerList; boolean fConfirmSave= true; @@ -394,8 +395,16 @@ public abstract class ContentMergeViewer extends ContentViewer // Make sure the compare configuration is not null fCompareConfiguration = cc != null ? cc : new CompareConfiguration(); - fPropertyChangeListener = (event) -> handlePropertyChangeEvent(event); + fPropertyChangeListener = event -> handlePropertyChangeEvent(event); fCompareConfiguration.addPropertyChangeListener(fPropertyChangeListener); + fPreferenceChangeListener = event -> { + if (event.getProperty().equals(ComparePreferencePage.SWAPPED)) { + getCompareConfiguration().setProperty(CompareConfiguration.MIRRORED, event.getNewValue()); + updateContentProvider(); + updateToolItems(); + } + }; + cc.getPreferenceStore().addPropertyChangeListener(fPreferenceChangeListener); fDefaultContentProvider = new MergeViewerContentProvider(fCompareConfiguration); updateContentProvider(); @@ -594,13 +603,6 @@ public abstract class ContentMergeViewer extends ContentViewer setAncestorVisibility(false, !Utilities.getBoolean(getCompareConfiguration(), ICompareUIConstants.PROP_IGNORE_ANCESTOR, false)); return; } - - if (key.equals(ComparePreferencePage.SWAPPED)) { - getCompareConfiguration().setProperty(CompareConfiguration.MIRRORED, event.getNewValue()); - updateContentProvider(); - updateToolItems(); - return; - } } void updateCursor(Control c, int dir) { @@ -1045,6 +1047,11 @@ public abstract class ContentMergeViewer extends ContentViewer fPropertyChangeListener= null; } + if (fPreferenceChangeListener != null) { + fCompareConfiguration.getPreferenceStore().removePropertyChangeListener(fPreferenceChangeListener); + fPreferenceChangeListener= null; + } + fAncestorLabel= null; fLeftLabel= null; if (Policy.debugContentMergeViewer) { |