From 2dcecc7f810a91dc19df462df08a3a8d16021605 Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Thu, 24 Sep 2015 21:16:35 +0300 Subject: [PATCH] fix painting of hidden border in DarculaComboBoxUI (focused state) --- .../ide/ui/laf/darcula/ui/DarculaComboBoxUI.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/ui/DarculaComboBoxUI.java b/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/ui/DarculaComboBoxUI.java index fbcc47eb235f..cebbc42aa245 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/ui/DarculaComboBoxUI.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/ui/DarculaComboBoxUI.java @@ -329,18 +329,18 @@ public class DarculaComboBoxUI extends BasicComboBoxUI implements Border { hasFocus = false; checkFocus(); - final Graphics2D g = (Graphics2D)g2; + final Graphics2D g = (Graphics2D)g2.create(); final Rectangle arrowButtonBounds = arrowButton.getBounds(); final int xxx = arrowButtonBounds.x - JBUI.scale(5); final int H = height - JBUI.scale(2); final int W = width - JBUI.scale(2); - final GraphicsConfig config = new GraphicsConfig(g); + final Shape clip = g.getClip(); g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_NORMALIZE); final int R = JBUI.scale(5); if (hasFocus) { - g.setClip(JBUI.scale(2), JBUI.scale(2), comboBox.getWidth()- JBUI.scale(4), comboBox.getHeight() - JBUI.scale(4)); + g.clipRect(JBUI.scale(2), JBUI.scale(2), comboBox.getWidth()- JBUI.scale(4), comboBox.getHeight() - JBUI.scale(4)); } if (editor != null && comboBox.isEditable()) { ((JComponent)editor).setBorder(null); @@ -368,7 +368,7 @@ public class DarculaComboBoxUI extends BasicComboBoxUI implements Border { paintCurrentValue(g, r, false); if (hasFocus) { - g.setClip(0, 0, comboBox.getWidth(), comboBox.getHeight()); + g.setClip(clip); DarculaUIUtil.paintFocusRing(g, JBUI.scale(2), JBUI.scale(2), width - JBUI.scale(4), height - JBUI.scale(4)); } else { @@ -376,14 +376,12 @@ public class DarculaComboBoxUI extends BasicComboBoxUI implements Border { g.drawRoundRect(JBUI.scale(1), JBUI.scale(1), width - JBUI.scale(2), height - JBUI.scale(2), R, R); if (!UIUtil.isUnderDarcula() && comboBox.isEnabled()) { g.setColor(getArrowButtonFillColor(getBorderColor())); - final Shape clip = g.getClip(); final int offX = xxx + JBUI.scale(5); g.clipRect(offX, y, width - offX, height); g.drawRoundRect(JBUI.scale(1), JBUI.scale(1), width - JBUI.scale(2), height - JBUI.scale(2), R, R); - g.setClip(clip); } } - config.restore(); + g.dispose(); } private void checkFocus() {