mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-201983 High contrast theme: there is no separator on a button with separator
GitOrigin-RevId: a7f2b96780823d2667f069d0d742f54003731a43
This commit is contained in:
committed by
intellij-monorepo-bot
parent
4addd957d6
commit
5044dccdfa
+17
-5
@@ -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"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user