always reset our graphics rendering hints

(this is usually not necessary because each component gets its own instance of Graphics when painting, but resetting may avoid side effects if our paint methods are invoked directly)
This commit is contained in:
Karl Tauber
2020-12-18 13:25:04 +01:00
parent 956001dbd7
commit 435068515a
10 changed files with 33 additions and 17 deletions

View File

@@ -166,8 +166,7 @@ public class FlatArrowButton
@Override
public void paint( Graphics g ) {
Graphics2D g2 = (Graphics2D)g;
FlatUIUtils.setRenderingHints( g2 );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
// paint hover or pressed background
if( isEnabled() ) {
@@ -179,7 +178,7 @@ public class FlatArrowButton
if( background != null ) {
g.setColor( deriveBackground( background ) );
paintBackground( g2 );
paintBackground( (Graphics2D) g );
}
}
@@ -191,7 +190,9 @@ public class FlatArrowButton
? hoverForeground
: foreground))
: disabledForeground ) );
paintArrow( g2 );
paintArrow( (Graphics2D) g );
FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
protected void paintBackground( Graphics2D g ) {

View File

@@ -19,7 +19,6 @@ package com.formdev.flatlaf.ui;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
@@ -221,8 +220,9 @@ public class FlatScrollBarUI
@Override
public void paint( Graphics g, JComponent c ) {
FlatUIUtils.setRenderingHints( (Graphics2D) g );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
super.paint( g, c );
FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
@Override

View File

@@ -264,7 +264,7 @@ public class FlatSpinnerUI
FlatUIUtils.paintParentBackground( g, c );
Graphics2D g2 = (Graphics2D) g;
FlatUIUtils.setRenderingHints( g2 );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g2 );
int width = c.getWidth();
int height = c.getHeight();
@@ -303,6 +303,8 @@ public class FlatSpinnerUI
}
paint( g, c );
FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
//---- class Handler ------------------------------------------------------

View File

@@ -20,7 +20,6 @@ import java.awt.Color;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
@@ -148,10 +147,12 @@ public class FlatSplitPaneUI
if( "plain".equals( style ) )
return;
FlatUIUtils.setRenderingHints( (Graphics2D) g );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
g.setColor( gripColor );
paintGrip( g, 0, 0, getWidth(), getHeight() );
FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
protected void paintGrip( Graphics g, int x, int y, int width, int height ) {

View File

@@ -106,13 +106,15 @@ public class FlatToolBarSeparatorUI
float lineWidth = scale( 1f );
float offset = scale( 2f );
FlatUIUtils.setRenderingHints( (Graphics2D) g );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
g.setColor( separatorColor );
if( isVertical( c ) )
((Graphics2D)g).fill( new Rectangle2D.Float( Math.round( (width - lineWidth) / 2f ), offset, lineWidth, height - (offset * 2) ) );
else
((Graphics2D)g).fill( new Rectangle2D.Float( offset, Math.round( (height - lineWidth) / 2f ), width - (offset * 2), lineWidth ) );
FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
private boolean isVertical( JComponent c ) {