diff --git a/platform/editor-ui-ex/src/com/intellij/injected/editor/MarkupModelWindow.java b/platform/editor-ui-ex/src/com/intellij/injected/editor/MarkupModelWindow.java index b11ff743642e..9fd72279c4f2 100644 --- a/platform/editor-ui-ex/src/com/intellij/injected/editor/MarkupModelWindow.java +++ b/platform/editor-ui-ex/src/com/intellij/injected/editor/MarkupModelWindow.java @@ -110,7 +110,7 @@ public class MarkupModelWindow extends UserDataHolderBase implements MarkupModel } @Override - public RangeHighlighter addPersistentLineHighlighter(final int line, final int layer, final TextAttributes textAttributes) { + public RangeHighlighterEx addPersistentLineHighlighter(final int line, final int layer, final TextAttributes textAttributes) { int hostLine = myDocument.injectedToHostLine(line); return myHostModel.addPersistentLineHighlighter(hostLine, layer, textAttributes); } diff --git a/platform/editor-ui-ex/src/com/intellij/openapi/editor/ex/MarkupModelEx.java b/platform/editor-ui-ex/src/com/intellij/openapi/editor/ex/MarkupModelEx.java index 284ef90e2007..28d8cb447d7c 100644 --- a/platform/editor-ui-ex/src/com/intellij/openapi/editor/ex/MarkupModelEx.java +++ b/platform/editor-ui-ex/src/com/intellij/openapi/editor/ex/MarkupModelEx.java @@ -33,7 +33,7 @@ public interface MarkupModelEx extends MarkupModel { void dispose(); @Nullable - RangeHighlighter addPersistentLineHighlighter(int lineNumber, int layer, TextAttributes textAttributes); + RangeHighlighterEx addPersistentLineHighlighter(int lineNumber, int layer, TextAttributes textAttributes); void fireAttributesChanged(@NotNull RangeHighlighterEx segmentHighlighter, boolean renderersChanged); diff --git a/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/EmptyMarkupModel.java b/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/EmptyMarkupModel.java index d9e5c4bd51bd..a3ac344e23bf 100644 --- a/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/EmptyMarkupModel.java +++ b/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/EmptyMarkupModel.java @@ -109,7 +109,7 @@ public class EmptyMarkupModel implements MarkupModelEx { } @Override - public RangeHighlighter addPersistentLineHighlighter(int lineNumber, int layer, TextAttributes textAttributes) { + public RangeHighlighterEx addPersistentLineHighlighter(int lineNumber, int layer, TextAttributes textAttributes) { return null; } diff --git a/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/MarkupModelImpl.java b/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/MarkupModelImpl.java index 161254604022..5724189b0110 100644 --- a/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/MarkupModelImpl.java +++ b/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/MarkupModelImpl.java @@ -76,7 +76,7 @@ public class MarkupModelImpl extends UserDataHolderBase implements MarkupModelEx @Override @Nullable - public RangeHighlighter addPersistentLineHighlighter(int lineNumber, int layer, TextAttributes textAttributes) { + public RangeHighlighterEx addPersistentLineHighlighter(int lineNumber, int layer, TextAttributes textAttributes) { if (isNotValidLine(lineNumber)) { return null; } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointImpl.java index 6aae02242ec4..07214a6f7671 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointImpl.java @@ -23,6 +23,7 @@ import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.colors.EditorColorsManager; import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.editor.ex.MarkupModelEx; +import com.intellij.openapi.editor.ex.RangeHighlighterEx; import com.intellij.openapi.editor.impl.DocumentMarkupModel; import com.intellij.openapi.editor.markup.GutterDraggableObject; import com.intellij.openapi.editor.markup.RangeHighlighter; @@ -54,7 +55,7 @@ import java.util.List; * @author nik */ public class XLineBreakpointImpl

extends XBreakpointBase, P, LineBreakpointState

> implements XLineBreakpoint

{ - @Nullable private RangeHighlighter myHighlighter; + @Nullable private RangeHighlighterEx myHighlighter; private final XLineBreakpointType

myType; private XSourcePosition mySourcePosition; private boolean myDisposed; @@ -86,25 +87,37 @@ public class XLineBreakpointImpl

extends XBreak EditorColorsScheme scheme = EditorColorsManager.getInstance().getGlobalScheme(); TextAttributes attributes = scheme.getAttributes(DebuggerColors.BREAKPOINT_ATTRIBUTES); - RangeHighlighter highlighter = myHighlighter; - if (highlighter != null && highlighter.isValid() && document.getLineNumber(highlighter.getStartOffset()) != getLine()) { + RangeHighlighterEx highlighter = myHighlighter; + if (highlighter != null && (!highlighter.isValid() || document.getLineNumber(highlighter.getStartOffset()) != getLine())) { highlighter.dispose(); myHighlighter = null; highlighter = null; } + MarkupModelEx markupModel; if (highlighter == null) { - MarkupModelEx markupModel = (MarkupModelEx)DocumentMarkupModel.forDocument(document, getProject(), true); + markupModel = (MarkupModelEx)DocumentMarkupModel.forDocument(document, getProject(), true); highlighter = markupModel.addPersistentLineHighlighter(getLine(), DebuggerColors.BREAKPOINT_HIGHLIGHTER_LAYER, attributes); - if (highlighter != null) { - highlighter.setGutterIconRenderer(createGutterIconRenderer()); - highlighter.putUserData(DebuggerColors.BREAKPOINT_HIGHLIGHTER_KEY, Boolean.TRUE); - myHighlighter = highlighter; + if (highlighter == null) { + return; } + + highlighter.setGutterIconRenderer(createGutterIconRenderer()); + highlighter.putUserData(DebuggerColors.BREAKPOINT_HIGHLIGHTER_KEY, Boolean.TRUE); + myHighlighter = highlighter; + } + else { + markupModel = null; } - if (highlighter != null) { - updateIcon(); + updateIcon(); + + if (markupModel == null) { + markupModel = (MarkupModelEx)DocumentMarkupModel.forDocument(document, getProject(), false); + if (markupModel != null) { + // renderersChanged false — we don't change gutter size + markupModel.fireAttributesChanged(highlighter, false); + } } }