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 > 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);
+ }
}
}