From b71b80db234d25caa3e1cfa23505f2f5ee1d4035 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Tue, 5 Apr 2011 20:03:03 +0400 Subject: [PATCH] remove only added highlighter --- .../internal/psiView/PsiViewerDialog.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java b/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java index 1dd56eedd869..09974f4929db 100644 --- a/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java +++ b/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java @@ -646,6 +646,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider { private class MyTreeSelectionListener implements TreeSelectionListener { private final TextAttributes myAttributes; + private RangeHighlighter myHighlighter; public MyTreeSelectionListener() { myAttributes = new TextAttributes(); @@ -656,11 +657,8 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider { public void valueChanged(TreeSelectionEvent e) { if (!myEditor.getDocument().getText().equals(myLastParsedText)) return; TreePath path = myTree.getSelectionPath(); - if (path == null) { - clearSelection(); - } - else { - clearSelection(); + clearSelection(); + if (path != null) { DefaultMutableTreeNode node = (DefaultMutableTreeNode)path.getLastPathComponent(); if (!(node.getUserObject() instanceof ViewerNodeDescriptor)) return; ViewerNodeDescriptor descriptor = (ViewerNodeDescriptor)node.getUserObject(); @@ -684,8 +682,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider { final int textLength = myEditor.getDocument().getTextLength(); if (end <= textLength) { - myEditor.getMarkupModel() - .addRangeHighlighter(start, end, HighlighterLayer.LAST, myAttributes, HighlighterTargetArea.EXACT_RANGE); + myHighlighter = myEditor.getMarkupModel().addRangeHighlighter(start, end, HighlighterLayer.LAST, myAttributes, HighlighterTargetArea.EXACT_RANGE); if (myTree.hasFocus()) { myEditor.getCaretModel().moveToOffset(start); myEditor.getScrollingModel().scrollToCaret(ScrollType.MAKE_VISIBLE); @@ -716,7 +713,10 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider { } private void clearSelection() { - myEditor.getMarkupModel().removeAllHighlighters(); + if (myHighlighter != null) { + myEditor.getMarkupModel().removeHighlighter(myHighlighter); + myHighlighter.dispose(); + } } }