IDEA-63443 Formatter: Improve formatter performance during operations that require big number of small changes

Disposing connection used for bulk document update listening if necessary
This commit is contained in:
Denis Zhdanov
2010-12-29 15:57:13 +03:00
parent 8c736a6077
commit e54da3264b
@@ -69,6 +69,7 @@ import com.intellij.util.Alarm;
import com.intellij.util.IJSwingUtilities;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.HashMap;
import com.intellij.util.messages.MessageBusConnection;
import com.intellij.util.text.CharArrayUtil;
import com.intellij.util.ui.ButtonlessScrollBarUI;
import com.intellij.util.ui.EmptyClipboardOwner;
@@ -173,6 +174,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
private final SoftWrapModelImpl mySoftWrapModel;
private static final RepaintCursorCommand ourCaretBlinkingCommand;
private MessageBusConnection myConnection;
private int myMouseSelectionState = MOUSE_SELECTION_STATE_NONE;
private FoldRegion myMouseSelectedRegion = null;
@@ -273,7 +275,8 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
myEditorDocumentAdapter = new EditorDocumentAdapter();
if (project != null) {
project.getMessageBus().connect().subscribe(DocumentBulkUpdateListener.TOPIC, new EditorDocumentBulkUpdateAdapter());
myConnection = project.getMessageBus().connect();
myConnection.subscribe(DocumentBulkUpdateListener.TOPIC, new EditorDocumentBulkUpdateAdapter());
}
myMouseMotionListeners = ContainerUtil.createEmptyCOWList();
@@ -603,6 +606,10 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
clearCaretThread();
myFocusListeners.clear();
if (myConnection != null) {
myConnection.disconnect();
}
}
private void clearCaretThread() {