From 0ef12d6db094acadbdba4901d8a86598631b949f Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Sat, 25 Aug 2012 16:31:22 +0400 Subject: [PATCH] [diff] Draw highlighters above gutters. Step 2: draw lines for deletion/insertion DrawBorders should always be true to accomplish that. So removing this parameter, since it is always true. --- .../application/options/ChangesDiffCalculator.java | 4 ++-- .../impl/fragments/FragmentHighlighterImpl.java | 10 +++++----- .../openapi/diff/impl/highlighting/DiffMarkup.java | 5 ++--- .../highlighting/NumberedFragmentHighlighter.java | 14 +++++++------- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/application/options/ChangesDiffCalculator.java b/platform/lang-impl/src/com/intellij/application/options/ChangesDiffCalculator.java index de9986930b56..ecbd386b55bf 100644 --- a/platform/lang-impl/src/com/intellij/application/options/ChangesDiffCalculator.java +++ b/platform/lang-impl/src/com/intellij/application/options/ChangesDiffCalculator.java @@ -123,7 +123,7 @@ public class ChangesDiffCalculator implements Disposable { } @Override - public void highlightText(Fragment fragment, boolean drawBorder, GutterIconRenderer gutterIconRenderer) { + public void highlightText(Fragment fragment, GutterIconRenderer gutterIconRenderer) { } @@ -143,7 +143,7 @@ public class ChangesDiffCalculator implements Disposable { } @Override - public void highlightText(Fragment fragment, boolean drawBorder, GutterIconRenderer gutterIconRenderer) { + public void highlightText(Fragment fragment, GutterIconRenderer gutterIconRenderer) { TextRange currentRange = fragment.getRange(FragmentSide.SIDE2); if (INTERESTED_DIFF_TYPES.contains(fragment.getType())) { ranges.add(currentRange); diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/fragments/FragmentHighlighterImpl.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/fragments/FragmentHighlighterImpl.java index f99228a62ab4..fad3114dcec7 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/fragments/FragmentHighlighterImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/fragments/FragmentHighlighterImpl.java @@ -40,19 +40,19 @@ public class FragmentHighlighterImpl implements FragmentHighlighter { } public void highlightInline(final InlineFragment fragment) { - highlightFragmentImpl(fragment, true); + highlightFragmentImpl(fragment); } - protected void highlightFragmentImpl(final Fragment fragment, final boolean drawBorder) { - myAppender1.highlightText(fragment, drawBorder, null); - myAppender2.highlightText(fragment, drawBorder, null); + protected void highlightFragmentImpl(final Fragment fragment) { + myAppender1.highlightText(fragment, null); + myAppender2.highlightText(fragment, null); } public void highlightLine(final LineFragment fragment) { addModifyActions(fragment, myAppender1, myAppender2); final Iterator iterator = fragment.getChildrenIterator(); if (iterator == null) { - highlightFragmentImpl(fragment, false); + highlightFragmentImpl(fragment); } else { for (; iterator.hasNext();) { diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/DiffMarkup.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/DiffMarkup.java index 84a6434c2a54..e32832d5118b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/DiffMarkup.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/DiffMarkup.java @@ -64,16 +64,15 @@ public abstract class DiffMarkup implements EditorSource, Disposable { return editor == null ? null : editor.getMarkupModel(); } - public void highlightText(Fragment fragment, boolean drawBorder, GutterIconRenderer gutterIconRenderer) { + public void highlightText(Fragment fragment, GutterIconRenderer gutterIconRenderer) { final TextDiffTypeEnum diffTypeEnum = fragment.getType(); if (diffTypeEnum == null) return; TextDiffType type = TextDiffType.create(diffTypeEnum); if (type == null) return; TextRange range = fragment.getRange(getSide()); TextAttributes attributes = type.getTextAttributes(getEditor()); - if (!drawBorder && range.getLength() == 0) return; RangeHighlighter rangeMarker; - if (drawBorder && range.getLength() == 0) { + if (range.getLength() == 0) { TextAttributes textAttributes = new TextAttributes(null, null, attributes.getBackgroundColor(), EffectType.BOXED, Font.PLAIN); rangeMarker = getMarkupModel().addRangeHighlighter(range.getStartOffset(), range.getStartOffset(), LAYER, textAttributes, HighlighterTargetArea.EXACT_RANGE); } diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/NumberedFragmentHighlighter.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/NumberedFragmentHighlighter.java index 05642ff58f40..9a50bc559b97 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/NumberedFragmentHighlighter.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/NumberedFragmentHighlighter.java @@ -75,29 +75,29 @@ public class NumberedFragmentHighlighter extends FragmentHighlighterImpl { } @Override - protected void highlightFragmentImpl(Fragment fragment, boolean drawBorder) { + protected void highlightFragmentImpl(Fragment fragment) { if (! myDrawNumber || fragment.getType() == null || TextDiffTypeEnum.NONE.equals(fragment.getType())) { - myAppender1.highlightText(fragment, drawBorder, null); - myAppender2.highlightText(fragment, drawBorder, null); + myAppender1.highlightText(fragment, null); + myAppender2.highlightText(fragment, null); return; } int lineLeft = myAppender1.getDocument().getLineNumber(fragment.getRange(FragmentSide.SIDE1).getStartOffset()); int lineRight = myAppender2.getDocument().getLineNumber(fragment.getRange(FragmentSide.SIDE2).getStartOffset()); Pair left = myLeftPrecalculated.get(lineLeft); if (myPreviousLineLeft == lineLeft || left == null) { - myAppender1.highlightText(fragment, drawBorder, null); + myAppender1.highlightText(fragment, null); } else { // draw border == true for range marker with highlighting and number be set anyway, even if range is empty - myAppender1.highlightText(fragment, true, new FragmentNumberGutterIconRenderer(left.getFirst(), getColorAttributesKey(left.getSecond()), myAppender1.getEditor().getScrollPane(), myAppender1.getEditor())); + myAppender1.highlightText(fragment, new FragmentNumberGutterIconRenderer(left.getFirst(), getColorAttributesKey(left.getSecond()), myAppender1.getEditor().getScrollPane(), myAppender1.getEditor())); myPreviousLineLeft = lineLeft; } Pair right = myRightPrecalculated.get(lineRight); if (myPreviousLineRight == lineRight || right == null) { - myAppender2.highlightText(fragment, drawBorder, null); + myAppender2.highlightText(fragment, null); } else { // draw border == true for range marker with highlighting and number be set anyway, even if range is empty - myAppender2.highlightText(fragment, true, new FragmentNumberGutterIconRenderer(right.getFirst(), getColorAttributesKey(right.getSecond()), myAppender1.getEditor().getScrollPane(), + myAppender2.highlightText(fragment, new FragmentNumberGutterIconRenderer(right.getFirst(), getColorAttributesKey(right.getSecond()), myAppender1.getEditor().getScrollPane(), myAppender1.getEditor())); myPreviousLineRight = lineRight; }