mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-12 15:07:11 -06:00
Window decorations: fixed top window border in dark themes when running in JetBrains Runtime (issue #244)
fixed/improved calculation of active border color
This commit is contained in:
@@ -18,6 +18,8 @@ FlatLaf Change Log
|
|||||||
color is different to default background color, even if component is not
|
color is different to default background color, even if component is not
|
||||||
opaque (which is the default). This paints selection if using the component as
|
opaque (which is the default). This paints selection if using the component as
|
||||||
cell renderer a Table, Tree or List.
|
cell renderer a Table, Tree or List.
|
||||||
|
- Custom window decorations: Fixed top window border in dark themes when running
|
||||||
|
in JetBrains Runtime.
|
||||||
|
|
||||||
|
|
||||||
## 1.0-rc1
|
## 1.0-rc1
|
||||||
|
|||||||
@@ -227,7 +227,6 @@ public class JBRCustomDecorations
|
|||||||
|
|
||||||
private final Color defaultActiveBorder = new Color( 0x707070 );
|
private final Color defaultActiveBorder = new Color( 0x707070 );
|
||||||
private final Color inactiveLightColor = new Color( 0xaaaaaa );
|
private final Color inactiveLightColor = new Color( 0xaaaaaa );
|
||||||
private final Color inactiveDarkColor = new Color( 0x3f3f3f );
|
|
||||||
|
|
||||||
private boolean colorizationAffectsBorders;
|
private boolean colorizationAffectsBorders;
|
||||||
private Color activeColor = defaultActiveBorder;
|
private Color activeColor = defaultActiveBorder;
|
||||||
@@ -273,7 +272,7 @@ public class JBRCustomDecorations
|
|||||||
Object colorizationColorBalanceObj = toolkit.getDesktopProperty( "win.dwm.colorizationColorBalance" );
|
Object colorizationColorBalanceObj = toolkit.getDesktopProperty( "win.dwm.colorizationColorBalance" );
|
||||||
if( colorizationColorBalanceObj instanceof Integer ) {
|
if( colorizationColorBalanceObj instanceof Integer ) {
|
||||||
int colorizationColorBalance = (Integer) colorizationColorBalanceObj;
|
int colorizationColorBalance = (Integer) colorizationColorBalanceObj;
|
||||||
if( colorizationColorBalance < 0 )
|
if( colorizationColorBalance < 0 || colorizationColorBalance > 100 )
|
||||||
colorizationColorBalance = 100;
|
colorizationColorBalance = 100;
|
||||||
|
|
||||||
if( colorizationColorBalance == 0 )
|
if( colorizationColorBalance == 0 )
|
||||||
@@ -283,9 +282,15 @@ public class JBRCustomDecorations
|
|||||||
|
|
||||||
float alpha = colorizationColorBalance / 100.0f;
|
float alpha = colorizationColorBalance / 100.0f;
|
||||||
float remainder = 1 - alpha;
|
float remainder = 1 - alpha;
|
||||||
int r = Math.round( (colorizationColor.getRed() * alpha + 0xD9 * remainder) );
|
int r = Math.round( colorizationColor.getRed() * alpha + 0xD9 * remainder );
|
||||||
int g = Math.round( (colorizationColor.getGreen() * alpha + 0xD9 * remainder) );
|
int g = Math.round( colorizationColor.getGreen() * alpha + 0xD9 * remainder );
|
||||||
int b = Math.round( (colorizationColor.getBlue() * alpha + 0xD9 * remainder) );
|
int b = Math.round( colorizationColor.getBlue() * alpha + 0xD9 * remainder );
|
||||||
|
|
||||||
|
// avoid potential IllegalArgumentException in Color constructor
|
||||||
|
r = Math.min( Math.max( r, 0 ), 255 );
|
||||||
|
g = Math.min( Math.max( g, 0 ), 255 );
|
||||||
|
b = Math.min( Math.max( b, 0 ), 255 );
|
||||||
|
|
||||||
return new Color( r, g, b );
|
return new Color( r, g, b );
|
||||||
}
|
}
|
||||||
return colorizationColor;
|
return colorizationColor;
|
||||||
@@ -300,7 +305,14 @@ public class JBRCustomDecorations
|
|||||||
Window window = SwingUtilities.windowForComponent( c );
|
Window window = SwingUtilities.windowForComponent( c );
|
||||||
boolean active = (window != null) ? window.isActive() : false;
|
boolean active = (window != null) ? window.isActive() : false;
|
||||||
|
|
||||||
g.setColor( active ? activeColor : (FlatLaf.isLafDark() ? inactiveDarkColor : inactiveLightColor) );
|
// paint top border
|
||||||
|
// - in light themes
|
||||||
|
// - in dark themes only for active windows if colorization affects borders
|
||||||
|
boolean paintTopBorder = !FlatLaf.isLafDark() || (active && colorizationAffectsBorders);
|
||||||
|
if( !paintTopBorder )
|
||||||
|
return;
|
||||||
|
|
||||||
|
g.setColor( active ? activeColor : inactiveLightColor );
|
||||||
HiDPIUtils.paintAtScale1x( (Graphics2D) g, x, y, width, height, this::paintImpl );
|
HiDPIUtils.paintAtScale1x( (Graphics2D) g, x, y, width, height, this::paintImpl );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user