Merge PR #790: Table header background is never restored after hover when the renderer background is null

This commit is contained in:
Karl Tauber
2024-01-10 19:26:22 +01:00
2 changed files with 12 additions and 9 deletions

View File

@@ -33,10 +33,13 @@ FlatLaf Change Log
- Fixed background of `boolean` columns when using alternating row colors.
(issue #780)
- Fixed border arc of components in complex table cell editors. (issue #786)
- TableHeader: No longer temporary replace header cell renderer while painting.
This avoids a `StackOverflowError` in case that custom renderer does this too.
(see [NetBeans issue #6835](https://github.com/apache/netbeans/issues/6835))
This also improves compatibility with custom table header implementations.
- TableHeader:
- No longer temporary replace header cell renderer while painting. This avoids
a `StackOverflowError` in case that custom renderer does this too. (see
[NetBeans issue #6835](https://github.com/apache/netbeans/issues/6835)) This
also improves compatibility with custom table header implementations.
- Header cell renderer background/foreground colors were not restored after
hover if renderer uses `null` for background/foreground. (PR #790)
- TabbedPane:
- Avoid unnecessary repainting whole tabbed pane content area when layouting
leading/trailing components.

View File

@@ -356,7 +356,7 @@ public class FlatTableHeaderUI
JLabel l = (JLabel) c;
Color oldBackground = null;
Color oldForeground = null;
Boolean oldOpaque = null;
boolean oldOpaque = false;
Icon oldIcon = null;
int oldHorizontalTextPosition = -1;
@@ -415,12 +415,12 @@ public class FlatTableHeaderUI
}
// restore modified renderer component properties
if( oldBackground != null )
if( background != null ) {
l.setBackground( oldBackground );
if( oldForeground != null )
l.setForeground( oldForeground );
if( oldOpaque != null )
l.setOpaque( oldOpaque );
}
if( foreground != null )
l.setForeground( oldForeground );
if( oldIcon != null )
l.setIcon( oldIcon );
if( oldHorizontalTextPosition >= 0 )