diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/util/SyncScrollSupport.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/util/SyncScrollSupport.java index 0f15e7a48001..78539e6e751f 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/util/SyncScrollSupport.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/util/SyncScrollSupport.java @@ -19,10 +19,13 @@ import com.intellij.openapi.Disposable; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.diff.impl.EditingSides; import com.intellij.openapi.diff.impl.highlighting.FragmentSide; -import com.intellij.openapi.editor.*; +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.editor.LogicalPosition; +import com.intellij.openapi.editor.ScrollType; +import com.intellij.openapi.editor.ScrollingModel; import com.intellij.openapi.editor.event.VisibleAreaEvent; import com.intellij.openapi.editor.event.VisibleAreaListener; -import com.intellij.openapi.util.Key; +import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Pair; import javax.swing.*; @@ -35,7 +38,7 @@ public class SyncScrollSupport implements Disposable { private final ArrayList myScrollers = new ArrayList(); public void install(EditingSides[] sideContainers) { - dispose(); + Disposer.dispose(this); Editor[] editors = new Editor[sideContainers.length + 1]; editors[0] = sideContainers[0].getEditor(FragmentSide.SIDE1); for (int i = 0; i < sideContainers.length; i++) { @@ -50,7 +53,7 @@ public class SyncScrollSupport implements Disposable { public void dispose() { for (ScrollListener scrollListener : myScrollers) { - scrollListener.dispose(); + Disposer.dispose(scrollListener); } myScrollers.clear(); } @@ -79,7 +82,7 @@ public class SyncScrollSupport implements Disposable { } private class ScrollListener implements VisibleAreaListener, Disposable { - private final Pair[] myScrollContexts; + private Pair[] myScrollContexts; private final Editor myEditor; public ScrollListener(Pair[] scrollContexts, Editor editor) { @@ -94,6 +97,7 @@ public class SyncScrollSupport implements Disposable { public void dispose() { myEditor.getScrollingModel().removeVisibleAreaListener(this); + myScrollContexts = null; } public void visibleAreaChanged(VisibleAreaEvent e) {