Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8278620

properties installed by javax.swing.LookAndFeel installColors and installColorsAndFont are not uninstalled

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Unresolved
    • Icon: P4 P4
    • tbd
    • 8, 11, 18
    • client-libs
    • 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.

            Unassigned Unassigned
            cushon Liam Miller-Cushon
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: