hide brace highlighting popup when corresponding editor highlighters are cleared

This commit is contained in:
Dmitry Batrak
2015-05-15 17:08:27 +03:00
parent 964b3c7be4
commit 960a3d468a
@@ -55,6 +55,7 @@ import com.intellij.psi.tree.IElementType;
import com.intellij.psi.util.PsiUtilBase;
import com.intellij.psi.util.PsiUtilCore;
import com.intellij.ui.ColorUtil;
import com.intellij.ui.LightweightHint;
import com.intellij.util.Alarm;
import com.intellij.util.Processor;
import com.intellij.util.containers.WeakHashMap;
@@ -71,6 +72,7 @@ import java.util.Set;
public class BraceHighlightingHandler {
private static final Key<List<RangeHighlighter>> BRACE_HIGHLIGHTERS_IN_EDITOR_VIEW_KEY = Key.create("BraceHighlighter.BRACE_HIGHLIGHTERS_IN_EDITOR_VIEW_KEY");
private static final Key<RangeHighlighter> LINE_MARKER_IN_EDITOR_KEY = Key.create("BraceHighlighter.LINE_MARKER_IN_EDITOR_KEY");
private static final Key<LightweightHint> HINT_IN_EDITOR_KEY = Key.create("BraceHighlighter.HINT_IN_EDITOR_KEY");
/**
* Holds weak references to the editors that are being processed at non-EDT.
@@ -522,7 +524,8 @@ public class BraceHighlightingHandler {
int line2 = myDocument.getLineNumber(range.getEndOffset());
line1 = Math.max(line1, line2 - 5);
range = new TextRange(myDocument.getLineStartOffset(line1), range.getEndOffset());
EditorFragmentComponent.showEditorFragmentHint(myEditor, range, true, true);
LightweightHint hint = EditorFragmentComponent.showEditorFragmentHint(myEditor, range, true, true);
myEditor.putUserData(HINT_IN_EDITOR_KEY, hint);
}
}
},
@@ -535,6 +538,12 @@ public class BraceHighlightingHandler {
highlighter.dispose();
}
highlighters.clear();
LightweightHint hint = myEditor.getUserData(HINT_IN_EDITOR_KEY);
if (hint != null) {
hint.hide();
myEditor.putUserData(HINT_IN_EDITOR_KEY, null);
}
}
private void lineMarkFragment(int startLine, int endLine, @NotNull Color color) {