From 56f0525c8a883bac90cb7eb3dde49d856715b16f Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Mon, 30 May 2016 21:40:16 +0200 Subject: [PATCH] add a listener to make help buttons non-opaque --- .../ui/laf/intellij/WinIntelliJButtonUI.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/intellij/WinIntelliJButtonUI.java b/platform/platform-impl/src/com/intellij/ide/ui/laf/intellij/WinIntelliJButtonUI.java index 4137ea6440da..98d2718ee8d9 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/intellij/WinIntelliJButtonUI.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/intellij/WinIntelliJButtonUI.java @@ -21,20 +21,48 @@ import sun.swing.SwingUtilities2; import javax.swing.*; import javax.swing.plaf.ComponentUI; import java.awt.*; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; /** * @author Konstantin Bulenkov */ public class WinIntelliJButtonUI extends DarculaButtonUI { + private PropertyChangeListener helpButtonListener = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + final Object source = evt.getSource(); + if (source instanceof AbstractButton) { + if (isHelpButton((JComponent)source)) { + ((AbstractButton)source).setOpaque(false); + } + } + } + }; + @SuppressWarnings({"MethodOverridesStaticMethodOfSuperclass", "UnusedDeclaration"}) public static ComponentUI createUI(JComponent c) { return new WinIntelliJButtonUI(); } + @Override + protected void installListeners(AbstractButton b) { + super.installListeners(b); + b.addPropertyChangeListener("JButton.buttonType", helpButtonListener); + } + + @Override + protected void uninstallListeners(AbstractButton b) { + b.removePropertyChangeListener("JButton.buttonType", helpButtonListener); + super.uninstallListeners(b); + } + @Override protected boolean paintDecorations(Graphics2D g, JComponent c) { if (isHelpButton(c)) { - return super.paintDecorations(g, c); + final Icon help = MacIntelliJIconCache.getIcon("winHelp"); + help.paintIcon(c, g, (c.getWidth() - help.getIconWidth()) / 2, (c.getHeight() - help.getIconHeight()) / 2); + return false; } final Insets i = c.getInsets(); g.setColor(c.hasFocus() ? UIManager.getColor("Button.intellij.native.activeBackgroundColor") : c.getBackground());