Hello,

  Could you review the updated fix:
    http://cr.openjdk.java.net/~alexsch/8152677/webrev.01

- file chooser file filter is used as an initial value for the old file filter in the AquaFileChooserUI.FilterComboBoxModel
  - AcceptAllFileFilter class and filed are made static


The current regression appears after fixing issue JDK-8031696 [macosx] TwentyThousandTest test failed with OOM. This was because for the each file filter setting (this includes file chooser creating and UI updating) new Aqua L&F file loading thread was started. The current fix makes the acceptAllFileFilter field static which allows to eliminate the tread starting when the file chooser UI is updated. However, it is still not enough and the TwentyThousandTest still fails. It requires additional investigation what else leads to the OOME. I have created a separate issue on it: JDK-8154548 [macosx] Reconsider TwentyThousandTest test failed fix:
   https://bugs.openjdk.java.net/browse/JDK-8154548

  Thanks,
  Alexandr.


On 15/04/16 20:26, Sergey Bylokhov wrote:
On 15.04.16 19:22, Alexander Scherbatiy wrote:
On 15/04/16 18:27, Sergey Bylokhov wrote:
  When a JFileChooser is created it always adds Accept All file filter
in the constructor because useAcceptAllFileFilter filed is true by default.
  Because of this the AquaFileChooserUI.FilterComboBoxModel initially
has the Accept All file filter as the first item.

  After that it is possible to unset the Accept All file filter by
calling JFileChooser.setAcceptAllFileFilterUsed(false).

But what will happen if the user will update the filter before the Aqua will be set as default l&f(for example if Metal is set as default via commandline)?

On 15.04.16 16:46, Alexander Scherbatiy wrote:

Hello,

Could you review the fix:
   bug: https://bugs.openjdk.java.net/browse/JDK-8152677
   webrev: http://cr.openjdk.java.net/~alexsch/8152677/webrev.00

   FilterComboBoxModel from AquaFileChooserUI overrides
getSelectedItem() method to always return the selected filter from the
file chooser.

JFileChooser.setFileFilter(FileFilter) first assign the passed filter
to fileFilter field and then fire "fileFilterChanged" property change
event. This leads that FilterComboBoxModel compares new file filter with
the selected one (which has the same value because it is obtained from
JFileChooser.fileFilter field) and do not updated JComboBox internal
structure so JComboBox.selectedItemReminder field still points to the
old one.

When a user selects “All Files” filter which is the first item from a
JFileChooser the JComboBox does not fire the action event because
selectedItemReminder points to the same first item.

   The proposed solution is to remember the previous selected item in
the AquaFileChooserUI.FilterComboBoxModel.

   Thanks,
   Alexandr.






Reply via email to