-
Enhancement
-
Resolution: Unresolved
-
P4
-
8, 11, 18
-
None
Properties that implement UIResource and are installed by component delegates are supposed to be uninstalled at uninstallUI time.
The installColors and installColorsAndFont methods in LookAndFeel allow installing properties that implement UIResource, but many callers of those methods fail to correctly uninstall the properties in their uninstallUI methods.
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicListUI.java is one of the only examples I found that correctly implements the logic to uninstall the properties: https://github.com/openjdk/jdk/blob/ca8c58c731959e3a1b8fe02255ed44fc1d14d565/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicListUI.java#L911-L919
The following examples call installColors or installColorsAndFont, but do not perform uninstallation:
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicButtonUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicLabelUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicMenuBarUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicPanelUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicProgressBarUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicScrollBarUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicScrollPaneUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSeparatorUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSliderUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSpinnerUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTableHeaderUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTableUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicToolBarUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicToolTipUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicViewportUI.java
src/java.desktop/share/classes/javax/swing/plaf/metal/MetalDesktopIconUI.java
src/java.desktop/share/classes/javax/swing/plaf/metal/MetalSeparatorUI.java
This issue was discovered while investigating https://bugs.openjdk.java.net/browse/JDK-8277817, see also the discussion in the review thread: https://git.openjdk.java.net/jdk/pull/6603
This bug tracks adding appropriate test coverage and fixing the component delegates which are not handling uninstallation correctly.
Additionally, it may be worth considering adding uninstall* methods to LookAndFeel corresponding to installColors and installColorsAndFont, to make it easier to use those methods correctly.
The installColors and installColorsAndFont methods in LookAndFeel allow installing properties that implement UIResource, but many callers of those methods fail to correctly uninstall the properties in their uninstallUI methods.
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicListUI.java is one of the only examples I found that correctly implements the logic to uninstall the properties: https://github.com/openjdk/jdk/blob/ca8c58c731959e3a1b8fe02255ed44fc1d14d565/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicListUI.java#L911-L919
The following examples call installColors or installColorsAndFont, but do not perform uninstallation:
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicButtonUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicLabelUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicMenuBarUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicPanelUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicProgressBarUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicScrollBarUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicScrollPaneUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSeparatorUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSliderUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSpinnerUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTableHeaderUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTableUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicToolBarUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicToolTipUI.java
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicViewportUI.java
src/java.desktop/share/classes/javax/swing/plaf/metal/MetalDesktopIconUI.java
src/java.desktop/share/classes/javax/swing/plaf/metal/MetalSeparatorUI.java
This issue was discovered while investigating https://bugs.openjdk.java.net/browse/JDK-8277817, see also the discussion in the review thread: https://git.openjdk.java.net/jdk/pull/6603
This bug tracks adding appropriate test coverage and fixing the component delegates which are not handling uninstallation correctly.
Additionally, it may be worth considering adding uninstall* methods to LookAndFeel corresponding to installColors and installColorsAndFont, to make it easier to use those methods correctly.
- csr for
-
JDK-8298350 properties installed by javax.swing.LookAndFeel installColors and installColorsAndFont are not uninstalled
-
- Closed
-
- relates to
-
JDK-8277817 java/awt/dnd/BadSerializationTest/BadSerializationTest.java failed: ClassNotFoundException: com.apple.laf.AquaImageFactory$SystemColorProxy
-
- Open
-
- links to
-
Review openjdk/jdk/10565