mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-11 22:47:13 -06:00
Spinner: optimized up/down chevron arrow positions
This commit is contained in:
@@ -145,11 +145,21 @@ public class FlatArrowButton
|
|||||||
int direction = getDirection();
|
int direction = getDirection();
|
||||||
boolean vert = (direction == NORTH || direction == SOUTH);
|
boolean vert = (direction == NORTH || direction == SOUTH);
|
||||||
|
|
||||||
|
// compute width/height
|
||||||
int w = scale( arrowWidth + (chevron ? 0 : 1) );
|
int w = scale( arrowWidth + (chevron ? 0 : 1) );
|
||||||
int h = scale( (arrowWidth / 2) + (chevron ? 0 : 1) );
|
int h = scale( (arrowWidth / 2) + (chevron ? 0 : 1) );
|
||||||
|
|
||||||
|
// rotate width/height
|
||||||
int rw = vert ? w : h;
|
int rw = vert ? w : h;
|
||||||
int rh = vert ? h : w;
|
int rh = vert ? h : w;
|
||||||
|
|
||||||
|
// chevron lines end 1px outside of width/height
|
||||||
|
if( chevron ) {
|
||||||
|
// add 1px to width/height for position calculation only
|
||||||
|
rw++;
|
||||||
|
rh++;
|
||||||
|
}
|
||||||
|
|
||||||
// Adding -/+0.35 before rounding tends move up NORTH arrows and move down SOUTH arrows.
|
// Adding -/+0.35 before rounding tends move up NORTH arrows and move down SOUTH arrows.
|
||||||
// This makes top margin of NORTH arrow equal to bottom margin of SOUTH arrow.
|
// This makes top margin of NORTH arrow equal to bottom margin of SOUTH arrow.
|
||||||
float rd = 0.35f;
|
float rd = 0.35f;
|
||||||
@@ -159,12 +169,6 @@ public class FlatArrowButton
|
|||||||
int x = Math.round( (width - rw) / 2f + scale( (float) xOffset ) + xrd );
|
int x = Math.round( (width - rw) / 2f + scale( (float) xOffset ) + xrd );
|
||||||
int y = Math.round( (height - rh) / 2f + scale( (float) yOffset ) + yrd );
|
int y = Math.round( (height - rh) / 2f + scale( (float) yOffset ) + yrd );
|
||||||
|
|
||||||
// optimization for small chevron arrows (e.g. OneTouchButtons in SplitPane)
|
|
||||||
if( x + rw >= width && x > 0 )
|
|
||||||
x--;
|
|
||||||
if( y + rh >= height && y > 0 )
|
|
||||||
y--;
|
|
||||||
|
|
||||||
// move arrow for round borders
|
// move arrow for round borders
|
||||||
Container parent = getParent();
|
Container parent = getParent();
|
||||||
if( vert && parent instanceof JComponent && FlatUIUtils.hasRoundBorder( (JComponent) parent ) )
|
if( vert && parent instanceof JComponent && FlatUIUtils.hasRoundBorder( (JComponent) parent ) )
|
||||||
@@ -176,7 +180,7 @@ public class FlatArrowButton
|
|||||||
: disabledForeground );
|
: disabledForeground );
|
||||||
g.translate( x, y );
|
g.translate( x, y );
|
||||||
/*debug
|
/*debug
|
||||||
debugPaint( g2, vert, w, h );
|
debugPaint( g2, vert, rw, rh );
|
||||||
debug*/
|
debug*/
|
||||||
Shape arrowShape = createArrowShape( direction, chevron, w, h );
|
Shape arrowShape = createArrowShape( direction, chevron, w, h );
|
||||||
if( chevron ) {
|
if( chevron ) {
|
||||||
@@ -203,7 +207,7 @@ debug*/
|
|||||||
private void debugPaint( Graphics g, boolean vert, int w, int h ) {
|
private void debugPaint( Graphics g, boolean vert, int w, int h ) {
|
||||||
Color oldColor = g.getColor();
|
Color oldColor = g.getColor();
|
||||||
g.setColor( Color.red );
|
g.setColor( Color.red );
|
||||||
g.drawRect( 0, 0, (vert ? w : h) - 1, (vert ? h : w) - 1 );
|
g.drawRect( 0, 0, w - 1, h - 1 );
|
||||||
|
|
||||||
int xy1 = -2;
|
int xy1 = -2;
|
||||||
int xy2 = h + 1;
|
int xy2 = h + 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user