mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-135897 Breakpoint icon is not shown if line under breakpoint contains folded annotation
This commit is contained in:
+18
-17
@@ -637,11 +637,11 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse
|
||||
if (renderer == null) {
|
||||
return;
|
||||
}
|
||||
if (myEditor.getFoldingModel().isOffsetCollapsed(highlighter.getStartOffset())) {
|
||||
if (!isHighlighterVisible(highlighter)) {
|
||||
return;
|
||||
}
|
||||
VisualPosition visualPosition = myEditor.offsetToVisualPosition(highlighter.getStartOffset());
|
||||
int line = EditorUtil.calcSurroundingRange(myEditor, visualPosition, visualPosition).getFirst().line;
|
||||
int lineStartOffset = EditorUtil.getNotFoldedLineStartOffset(myEditor, highlighter.getStartOffset());
|
||||
int line = myEditor.getDocument().getLineNumber(lineStartOffset);
|
||||
List<GutterMark> renderers = myLineToGutterRenderers.get(line);
|
||||
if (renderers == null) {
|
||||
renderers = new SmartList<GutterMark>();
|
||||
@@ -675,6 +675,17 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse
|
||||
myLineMarkerAreaWidth = myIconsAreaWidth + FREE_PAINTERS_AREA_WIDTH;
|
||||
}
|
||||
|
||||
private boolean isHighlighterVisible(RangeHighlighter highlighter) {
|
||||
int startOffset = highlighter instanceof RangeHighlighterEx ?
|
||||
((RangeHighlighterEx)highlighter).getAffectedAreaStartOffset() :
|
||||
highlighter.getStartOffset();
|
||||
int endOffset = highlighter instanceof RangeHighlighterEx ?
|
||||
((RangeHighlighterEx)highlighter).getAffectedAreaEndOffset() :
|
||||
highlighter.getEndOffset();
|
||||
FoldRegion foldRegion = myEditor.getFoldingModel().getCollapsedRegionAtOffset(startOffset);
|
||||
return foldRegion == null || foldRegion.getEndOffset() < endOffset;
|
||||
}
|
||||
|
||||
private void paintGutterRenderers(final Graphics g, int firstVisibleOffset, int lastVisibleOffset) {
|
||||
Graphics2D g2 = (Graphics2D)g;
|
||||
|
||||
@@ -698,22 +709,12 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse
|
||||
}
|
||||
|
||||
private void paintIcons(final int firstVisibleLine, final int lastVisibleLine, final Graphics g) {
|
||||
myLineToGutterRenderers.forEachKey(new TIntProcedure() {
|
||||
@Override
|
||||
public boolean execute(int line) {
|
||||
if (firstVisibleLine > line || lastVisibleLine < line) return true;
|
||||
if (isLineCollapsed(line)) return true;
|
||||
List<GutterMark> renderers = myLineToGutterRenderers.get(line);
|
||||
for (int line = firstVisibleLine; line <= lastVisibleLine; line++) {
|
||||
List<GutterMark> renderers = myLineToGutterRenderers.get(line);
|
||||
if (renderers != null) {
|
||||
paintIconRow(line, renderers, g);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private boolean isLineCollapsed(final int line) {
|
||||
int startOffset = myEditor.getDocument().getLineStartOffset(line);
|
||||
final FoldRegion region = myEditor.getFoldingModel().getCollapsedRegionAtOffset(startOffset);
|
||||
return region != null && region.getEndOffset() >= myEditor.getDocument().getLineEndOffset(line);
|
||||
}
|
||||
}
|
||||
|
||||
private void paintIconRow(int line, List<GutterMark> row, final Graphics g) {
|
||||
|
||||
@@ -1115,7 +1115,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public EditorGutterComponentEx getGutterComponentEx() {
|
||||
public EditorGutterComponentImpl getGutterComponentEx() {
|
||||
return myGutterComponent;
|
||||
}
|
||||
|
||||
|
||||
@@ -368,9 +368,8 @@ public class FoldingModelImpl implements FoldingModelEx, PrioritizedDocumentList
|
||||
|
||||
myEditor.updateCaretCursor();
|
||||
myEditor.recalculateSizeAndRepaint();
|
||||
if (myEditor.getGutterComponentEx().isFoldingOutlineShown()) {
|
||||
myEditor.getGutterComponentEx().repaint();
|
||||
}
|
||||
myEditor.getGutterComponentEx().updateSize();
|
||||
myEditor.getGutterComponentEx().repaint();
|
||||
|
||||
LogicalPosition caretPosition = myEditor.getCaretModel().getLogicalPosition();
|
||||
// There is a possible case that caret position is already visual position aware. But visual position depends on number of folded
|
||||
|
||||
Reference in New Issue
Block a user