From c0d12b171e752755e263f5afcbf1a6a9889c0053 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Wed, 14 Mar 2012 17:15:00 +0400 Subject: [PATCH] persistent highlighter update bug --- .../ui/breakpoints/BreakpointWithHighlighter.java | 11 +++++++---- .../com/intellij/openapi/editor/impl/EditorImpl.java | 2 +- .../editor/impl/PersistentRangeHighlighterImpl.java | 10 +++++++--- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointWithHighlighter.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointWithHighlighter.java index 7bf8ef7f174c..d7a083e9d051 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointWithHighlighter.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointWithHighlighter.java @@ -184,7 +184,6 @@ public abstract class BreakpointWithHighlighter extends Breakpoint { reload(); } - @Nullable public RangeHighlighter getHighlighter() { ApplicationManager.getApplication().assertIsDispatchThread(); return myHighlighter; @@ -204,7 +203,6 @@ public abstract class BreakpointWithHighlighter extends Breakpoint { }).booleanValue(); } - @Nullable public SourcePosition getSourcePosition() { return mySourcePosition; } @@ -679,7 +677,7 @@ public abstract class BreakpointWithHighlighter extends Breakpoint { @Override public void actionPerformed(AnActionEvent e) { ENABLED = !ENABLED; - DebuggerManagerEx.getInstanceEx(BreakpointWithHighlighter.this.getProject()).getBreakpointManager().fireBreakpointChanged(BreakpointWithHighlighter.this); + DebuggerManagerEx.getInstanceEx(getProject()).getBreakpointManager().fireBreakpointChanged(BreakpointWithHighlighter.this); updateUI(); } }; @@ -696,7 +694,7 @@ public abstract class BreakpointWithHighlighter extends Breakpoint { @Override public boolean copy(int line, @NotNull VirtualFile file) { final PsiFile psiFile = PsiManager.getInstance(getProject()).findFile(file); - return psiFile == null ? false : moveTo(SourcePosition.createFromLine(psiFile, line)); + return psiFile != null && moveTo(SourcePosition.createFromLine(psiFile, line)); } @Override @@ -718,5 +716,10 @@ public abstract class BreakpointWithHighlighter extends Breakpoint { public int hashCode() { return getIcon().hashCode(); } + + @Override + public String toString() { + return "LB " + getDisplayName(); + } } } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index ca692ebbf5d0..4a693d313f25 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -1520,7 +1520,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi if (myDocument.getTextLength() > 0) { int startDocLine = myDocument.getLineNumber(e.getOffset()); int endDocLine = myDocument.getLineNumber(e.getOffset() + e.getNewLength()); - if (e.getOldLength() > e.getNewLength() || startDocLine != endDocLine) { + if (e.getOldLength() > e.getNewLength() || startDocLine != endDocLine || StringUtil.indexOf(e.getOldFragment(),'\n') != -1) { updateGutterSize(); } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/PersistentRangeHighlighterImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/PersistentRangeHighlighterImpl.java index ca6f63f572c9..0b67ed593481 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/PersistentRangeHighlighterImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/PersistentRangeHighlighterImpl.java @@ -49,7 +49,7 @@ class PersistentRangeHighlighterImpl extends RangeHighlighterImpl implements Ran if (shouldTranslateViaDiff) { wasTranslatedViaDiff = translatedViaDiff(e, event); } - if (! wasTranslatedViaDiff) { + if (!wasTranslatedViaDiff) { super.changedUpdateImpl(e); if (isValid()) { setLine(getDocument().getLineNumber(getStartOffset())); @@ -59,6 +59,10 @@ class PersistentRangeHighlighterImpl extends RangeHighlighterImpl implements Ran } } } + if (isValid() && getTargetArea() == HighlighterTargetArea.LINES_IN_RANGE) { + setIntervalStart(getDocument().getLineStartOffset(getLine())); + setIntervalEnd(getDocument().getLineEndOffset(getLine())); + } } private boolean translatedViaDiff(DocumentEvent e, DocumentEventImpl event) { @@ -88,11 +92,11 @@ class PersistentRangeHighlighterImpl extends RangeHighlighterImpl implements Ran } // delegates - public int getLine() { + private int getLine() { return getData().myLine; } - public void setLine(int line) { + private void setLine(int line) { getData().myLine = line; } }