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.

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

Commit messages:
 - 8271315: Redo: Nimbus JTree renderer properties persist across L&F changes
 - 8271315: Redo: Nimbus JTree renderer properties persist across L&F changes

Changes: https://git.openjdk.java.net/jdk/pull/5178/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=5178&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8271315
  Stats: 118 lines in 4 files changed: 110 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