On Tue, 3 Sep 2024 08:42:03 GMT, Prasanta Sadhukhan <psadhuk...@openjdk.org> 
wrote:

> I am not sure why secondary loop was added in the testcase for JDK-8078269.. 

That is unclear to me as well. 

> JDK-8078269 issue was `TabbedPane.tabAreaBackground` should have precedence 
> over `setBackground` but it was not working after JDK-8007563.. The 8007563 
> tests for non-opaque case whereas 8078269 issue was for opaque. It seems if 
> we put `UIManager.put("TabbedPane.tabAreaBackground", Color.GREEN); ` then 
> the tabbedpane areas where there are no tabs are not GREEN but RED... Seems 
> like we need a new testcase for JDK-8078269 and do away with secondary loop 
> in 8007563 testcase..

This issue still exists with the existing implementation in MetalTabbedPaneUI. 
If we add `UIManager.put("TabbedPane.tabAreaBackground", Color.GREEN); ` to the 
existing test then the expected output is that `the tabbedpane areas where 
there are no tabs should be GREEN`  but it is `RED` and the reason is the 
**background color instance check of UIResource** at 
[L905](https://github.com/kumarabhi006/jdk/blob/73f7a5f15dbba54a98f3916ff1190520ac07874d/src/java.desktop/share/classes/javax/swing/plaf/metal/MetalTabbedPaneUI.java#L905).
 Since `background is an instance of Color object` the condition evaluates to 
**false** and the graphic's object color is set to the background of component 
which is RED.

I think removal of SecondaryLoop should be ok for this PR. And for  JDK-8078269 
as you suggested we may need a new test case which checks for the 
`UIManager.put("TabbedPane.tabAreaBackground", Color.GREEN);` as the property 
is not tested here.

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

PR Comment: https://git.openjdk.org/jdk/pull/20791#issuecomment-2326188554

Reply via email to