> 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

Reply via email to