RFR: 8331619: TabbedPane's contentOpaque, tabsOpaque and setOpaque doesn't work properly in Aqua LAF

Alisen Chung achung at openjdk.org
Wed May 15 03:08:10 UTC 2024


On Fri, 10 May 2024 07:05:11 GMT, Abhishek Kumar <abhiscxk at openjdk.org> wrote:

> JTabbedPane's contentOpaque and tabsOpaque properties are not honored in Aqua L&F. JTabbedPane's content area and tab background color are not as expected when tabbedpane opacity is set to true or false. Fix is to handle the opacity behavior correctly and inline with other LAF as well. 
> 
> Existing test `TestBackgroundScrollPolicy.java` failed with the proposed fix and it is updated to run only for linux and windows platform because the content area for tabbedpane is rendered to the width and height of tabbedpane starting from (0, 0) position (https://github.com/openjdk/jdk/blob/cf7c97732320d70de5f5725c920d5c3861a2c9c8/src/java.desktop/macosx/classes/com/apple/laf/AquaTabbedPaneUI.java#L684C16-L684C16) and that leaves no place for tab area behind tabs.
> 
> CI testing is green after this test update and link posted in JBS.

src/java.desktop/macosx/classes/com/apple/laf/AquaTabbedPaneUI.java line 694:

> 692:         }
> 693: 
> 694:         if ((tabPane.isOpaque() || contentOpaque) && tabPane.getTabCount() > 0) {

what is the difference between tabPane.isOpaque() and contentOpaque? Should isOpaque be set when contentOpaque is set?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/19170#discussion_r1600883486


More information about the client-libs-dev mailing list