On Thu, 19 Aug 2021 06:13:39 GMT, Prasanta Sadhukhan <psadhuk...@openjdk.org> wrote:
> This is another attempt of fixing JDK-8249674 which created a regression > JDK-8266510 for which it was backed out. > This fix reinstates the UIResource properties for "Tree.leafIcon", > "Tree.closedIcon", "Tree.openIcon", "Tree.selectionForeground", > "Tree.textForeground", "Tree.selectionBackground", "Tree.textBackground", > "Tree.selectionBorderColor" for NimbusLookAndFeel. > > The regression which was "when a JTree node is selected, the text should be > painted using the selected text color (white), matching the color of the > expansion control. Instead, it is painted using the standard color (black)" > is also fixed by this fix, although I could not find any mention of this > behaviour in the spec that selected text color should match the expanded icon > color > but it's a long standing behaviour, so catered to it. > It was happening because SynthLabelUI#paint when it tries to paint > textForeground for cell label, it calls > > g.setColor(context.getStyle().getColor(context, > ColorType.TEXT_FOREGROUND)); > > > which then calls SynthStyle#getColor where even though cell renderer > correctly gets the foreground color, it gets overridden by getColorForState() > because the color is a UIResource and there's no corresponding color defined > for that state for Tree.CellRenderer so it uses default "black" color for > "text" as defined in skin.laf > > else if (type == ColorType.TEXT_FOREGROUND) { > color = c.getForeground(); > } > } > > if (color == null || color instanceof UIResource) { > // Then use what we've locally defined > color = getColorForState(context, type); > } > > > Proposed fix is to check if current foregroundColor for > DefaultTreeCellRenderer is UIResouce, then use that color itself. This pull request has now been integrated. Changeset: e43a907f Author: Prasanta Sadhukhan <psadhuk...@openjdk.org> URL: https://git.openjdk.java.net/jdk/commit/e43a907f20f99fa1f788fcbe2e99631dd01578d4 Stats: 279 lines in 5 files changed: 271 ins; 0 del; 8 mod 8271315: Redo: Nimbus JTree renderer properties persist across L&F changes Reviewed-by: aivanov ------------- PR: https://git.openjdk.java.net/jdk/pull/5178