From d22cffe7be8f9ceec312e1596f4df4a30fda931c Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Wed, 5 Mar 2014 14:28:38 +0100 Subject: [PATCH] don't paint in the overlapped region --- .../execution/console/ConsoleGutterComponent.java | 11 ++++++++--- .../execution/console/GutterContentProvider.java | 2 +- .../execution/console/LanguageConsoleBuilder.java | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/console/ConsoleGutterComponent.java b/platform/lang-impl/src/com/intellij/execution/console/ConsoleGutterComponent.java index 7fa45dfd1757..3f88997bdad1 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/ConsoleGutterComponent.java +++ b/platform/lang-impl/src/com/intellij/execution/console/ConsoleGutterComponent.java @@ -45,7 +45,7 @@ class ConsoleGutterComponent extends JComponent implements MouseMotionListener { this.atLineStart = atLineStart; if (atLineStart) { - setOpaque(gutterContentProvider.getStartLineOverlap(editor) == 0); + setOpaque(gutterContentProvider.getLineStartGutterOverlap(editor) == 0); } else { addListeners(); @@ -123,13 +123,18 @@ class ConsoleGutterComponent extends JComponent implements MouseMotionListener { ((ApplicationImpl)ApplicationManager.getApplication()).editorPaintStart(); try { Rectangle clip = g.getClipBounds(); - if (clip.height < 0 || maxContentWidth == 0) { + if (clip.height <= 0 || maxContentWidth == 0) { return; } if (atLineStart) { + // don't paint in the overlapped region + if (clip.x >= maxContentWidth) { + return; + } + g.setColor(editor.getBackgroundColor()); - g.fillRect(clip.x, clip.y, clip.width == getWidth() ? (clip.width - gutterContentProvider.getStartLineOverlap(editor)) : clip.width, clip.height); + g.fillRect(clip.x, clip.y, Math.min(clip.width, maxContentWidth - clip.x), clip.height); } UISettings.setupAntialiasing(g); diff --git a/platform/lang-impl/src/com/intellij/execution/console/GutterContentProvider.java b/platform/lang-impl/src/com/intellij/execution/console/GutterContentProvider.java index 36cded0ba99d..c2eed1a09cd3 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/GutterContentProvider.java +++ b/platform/lang-impl/src/com/intellij/execution/console/GutterContentProvider.java @@ -34,7 +34,7 @@ public abstract class GutterContentProvider { return true; } - public int getStartLineOverlap(@NotNull Editor editor) { + public int getLineStartGutterOverlap(@NotNull Editor editor) { return 0; } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleBuilder.java b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleBuilder.java index de21e011cd3c..22b82c803c74 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleBuilder.java +++ b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleBuilder.java @@ -251,7 +251,7 @@ public final class LanguageConsoleBuilder { int w = getWidth(); int h = getHeight(); int lineStartGutterWidth = lineStartGutter.getPreferredSize().width; - lineStartGutter.setBounds(0, 0, lineStartGutterWidth + gutterContentProvider.getStartLineOverlap(editor.getEditor()), h); + lineStartGutter.setBounds(0, 0, lineStartGutterWidth + gutterContentProvider.getLineStartGutterOverlap(editor.getEditor()), h); editor.setBounds(lineStartGutterWidth, 0, w - lineStartGutterWidth, h);