diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/BorderEffect.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/BorderEffect.java index 0c008626a314..ec38b8c6c90e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/BorderEffect.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/BorderEffect.java @@ -79,11 +79,6 @@ public class BorderEffect { paintBorder(myGraphics, myEditor, startOffset, endOffset, color, effectType); } - private boolean intersectsRange(RangeHighlighterEx rangeHighlighter) { - return myRange.contains(rangeHighlighter.getAffectedAreaStartOffset()) || - myRange.contains(rangeHighlighter.getAffectedAreaEndOffset()); - } - public void paintHighlighters(MarkupModelEx markupModel) { markupModel.processRangeHighlightersOverlappingWith(myStartOffset, myEndOffset, new Processor() { @Override @@ -91,7 +86,7 @@ public class BorderEffect { if (!rangeHighlighter.getEditorFilter().avaliableIn(myEditor)) return true; TextAttributes textAttributes = rangeHighlighter.getTextAttributes(); - if (isBorder(textAttributes) && intersectsRange(rangeHighlighter)) { + if (isBorder(textAttributes)) { paintBorder(rangeHighlighter, textAttributes); } return true; @@ -144,8 +139,11 @@ public class BorderEffect { } return; } + int startLine = editor.offsetToVisualLine(startOffset); + int endLine = editor.offsetToVisualLine(endOffset); + int maxWidth = Math.max(endX, editor.getMaxWidthInVisualLineRange(startLine, endLine - 1, false)); BorderGraphics border = new BorderGraphics(g, startX, startY, effectType); - border.horizontalTo(editor.getMaxWidthInRange(startOffset, endOffset) - 1); + border.horizontalTo(maxWidth); border.verticalRel(height - 1); border.horizontalTo(endX); if (endX > 0) { 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 b08de4bfc2b1..7b5f21a3ddf8 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 @@ -2412,12 +2412,17 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi @Override public int getMaxWidthInRange(int startOffset, int endOffset) { if (myUseNewRendering) return myView.getMaxWidthInRange(startOffset, endOffset); - int width = 0; int start = offsetToVisualLine(startOffset); int end = offsetToVisualLine(endOffset); - for (int i = start; i <= end; i++) { - int lastColumn = EditorUtil.getLastVisualLineColumnNumber(this, i) + 1; + return getMaxWidthInVisualLineRange(start, end, true); + } + + int getMaxWidthInVisualLineRange(int startVisualLine, int endVisualLine, boolean addOneColumn) { + int width = 0; + + for (int i = startVisualLine; i <= endVisualLine; i++) { + int lastColumn = EditorUtil.getLastVisualLineColumnNumber(this, i) + (addOneColumn ? 1 : 0); int lineWidth = visualPositionToXY(new VisualPosition(i, lastColumn)).x; if (lineWidth > width) {