IDEA-201983 High contrast theme: there is no separator on a button with separator

GitOrigin-RevId: a7f2b96780823d2667f069d0d742f54003731a43
This commit is contained in:
Kirill Kirichenko
2020-12-18 15:37:49 +00:00
committed by intellij-monorepo-bot
parent 4addd957d6
commit 5044dccdfa
3 changed files with 30 additions and 5 deletions
@@ -3,17 +3,16 @@ package com.intellij.ide.ui.laf.darcula.ui
import com.intellij.ide.ui.laf.darcula.DarculaUIUtil.*
import com.intellij.ide.ui.laf.darcula.ui.DarculaButtonUI.getDisabledTextColor
import com.intellij.ide.ui.laf.darcula.ui.DarculaButtonUI.isDefaultButton
import com.intellij.ide.ui.laf.darcula.ui.DarculaComboBoxUI.getArrowButtonPreferredSize
import com.intellij.ui.components.BasicOptionButtonUI
import com.intellij.util.ui.JBUI
import com.intellij.util.ui.JBUI.scale
import java.awt.Dimension
import java.awt.Graphics
import java.awt.Graphics2D
import java.awt.RenderingHints
import java.awt.*
import java.awt.geom.Rectangle2D
import javax.swing.AbstractButton
import javax.swing.JComponent
import javax.swing.UIManager
import javax.swing.border.Border
open class DarculaOptionButtonUI : BasicOptionButtonUI() {
@@ -89,10 +88,23 @@ open class DarculaOptionButtonUI : BasicOptionButtonUI() {
val yOffset = BW.getFloat() + LW.getFloat() + scale(1)
val x = mainButton.width.toFloat()
g.paint = (mainButton.border as DarculaButtonPainter).getBorderPaint(c)
g.paint = separatorColor(c)
g.fill(Rectangle2D.Float(x, yOffset, LW.getFloat(), mainButton.height - yOffset * 2))
}
private fun separatorColor(c: JComponent) : Paint {
val defButton = isDefaultButton(c as AbstractButton)
val hasFocus = c.hasFocus()
val resourceName = when {
defButton && !hasFocus -> "OptionButton.default.separatorColor"
!defButton && !hasFocus -> "OptionButton.separatorColor"
else -> null
}
return if (resourceName != null) UIManager.getColor(resourceName) else (mainButton.border as DarculaButtonPainter).getBorderPaint(c)
}
override fun updateOptions(): Unit = super.updateOptions().also {
optionButton.border = if (isSimpleButton) optionButtonBorder else mainButton.border
}
@@ -213,6 +213,11 @@
}
},
"OptionButton" : {
"default.separatorColor": "#000000",
"separatorColor": "#FFFFFF"
},
"ParameterInfo": {
"background": "#281A33",
"foreground": "#CCCCCC",
@@ -659,6 +659,14 @@
"key": "menuText",
"deprecated": true
},
{
"key": "OptionButton.default.separatorColor",
"description": "JBOptionButton separator color in default state."
},
{
"key": "OptionButton.separatorColor",
"description": "JBOptionButton separator color."
},
{
"key": "OptionPane.background"
},