On Wed, 25 Aug 2021 06:17:56 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. > > Prasanta Sadhukhan has updated the pull request incrementally with one > additional commit since the last revision: > > Add test I see you've added the manual test. Great! ------------- PR: https://git.openjdk.java.net/jdk/pull/5178