diff: do not paint over annotations in gutter
[idea/community.git] / platform / diff-impl / src / com / intellij / diff / util / DiffLineSeparatorRenderer.java
index 8006a9829db7ebfeb232d23ea314b540c1e628c8..7570cbb9c33f3f33e1e51c98cdd988fdf2d96a0a 100644 (file)
@@ -17,9 +17,11 @@ package com.intellij.diff.util;
 
 import com.intellij.openapi.editor.Editor;
 import com.intellij.openapi.editor.colors.ColorKey;
+import com.intellij.openapi.editor.colors.EditorColors;
 import com.intellij.openapi.editor.colors.EditorColorsManager;
 import com.intellij.openapi.editor.colors.EditorColorsScheme;
 import com.intellij.openapi.editor.ex.EditorEx;
+import com.intellij.openapi.editor.ex.EditorGutterComponentEx;
 import com.intellij.openapi.editor.markup.LineMarkerRenderer;
 import com.intellij.openapi.editor.markup.LineSeparatorRenderer;
 import com.intellij.openapi.ui.GraphicsConfig;
@@ -103,6 +105,14 @@ public class DiffLineSeparatorRenderer implements LineMarkerRenderer, LineSepara
     int y = r.y;
     int lineHeight = myEditor.getLineHeight();
 
+    EditorGutterComponentEx gutter = ((EditorEx)editor).getGutterComponentEx();
+    int annotationsOffset = gutter.getAnnotationsAreaOffset();
+    int annotationsWidth = gutter.getAnnotationsAreaWidth();
+    if (annotationsWidth != 0) {
+      g.setColor(editor.getColorsScheme().getColor(EditorColors.GUTTER_BACKGROUND));
+      g.fillRect(annotationsOffset, y, annotationsWidth, lineHeight);
+    }
+
     draw(g, 0, y, lineHeight, myEditor.getColorsScheme());
   }
 
@@ -141,6 +151,7 @@ public class DiffLineSeparatorRenderer implements LineMarkerRenderer, LineSepara
     int height = getHeight(lineHeight);
 
     Rectangle clip = g.getClipBounds();
+    if (clip.width <= 0) return;
     int count = (clip.width / step + 3);
     int shift = (clip.x - shiftX) / step;