On Wed, 25 Aug 2021 04:11:55 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:
> 
>   Test update

It is reproducible but since is only color we tend to miss it since there is no 
rule that it has to be of that color...As I told, I can create manual test if 
that is what is needed..

-------------

PR: https://git.openjdk.java.net/jdk/pull/5178

Reply via email to