> 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.
Prasanta Sadhukhan has updated the pull request incrementally with one
additional commit since the last revision:
Test update
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/5178/files
- new: https://git.openjdk.java.net/jdk/pull/5178/files/ae916628..fb56b957
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=5178&range=01
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=5178&range=00-01
Stats: 8 lines in 1 file changed: 0 ins; 0 del; 8 mod
Patch: https://git.openjdk.java.net/jdk/pull/5178.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/5178/head:pull/5178
PR: https://git.openjdk.java.net/jdk/pull/5178