Hello.
Please review the fix for jdk11.

Bug: https://bugs.openjdk.java.net/browse/JDK-8205144
Webrev: http://cr.openjdk.java.net/~serb/8205144/webrev.00

Our implementation of JSpinner tries to maintain the font which is used in the text field inside spinner. There are three cases when the font of the text field should be changed to the font of spinner(if the font of text field was not set by the user).
 - By default when the spinner is created(fixed in JDK-6421058)
 - When the user change the font of the spinner(fixed in JDK-5036022)

And there is one more case which should be taken into account. It is possible that LaF can change the font of text field to the font which is used by default by all textfields in this LaF. It is possible to reproduce this using:
==========
    /**
     * A simple minded look and feel change: ask each node in the tree
     * to <code>updateUI()</code> -- that is, to initialize its UI property
     * with the current look and feel.
     */
    public static void updateComponentTreeUI(Component c)

==========

This method will iterate over hierarchy of the components and call updateUI() for each components, then its children, and so on. This is a situation when the bug is reproduced. During updateUI() in JSpinner the font of internal text field will be set to the font of the spinner, but later when the updateUI() will be called for the text field itself the font will be set to default font of of all text fields.

The problem is not reproduced if the application do not change the LaF on the fly, because in this case we call updateUI() for spinner after updateUI() for internal text field.

The fix will reject all fonts(UIResource) which were not set by the user, except the font of the spinner.

--
Best regards, Sergey.

Reply via email to