src/java.desktop/macosx/classes/com/apple/laf/AquaFileChooserUI.java

Print this page

        

*** 1298,1313 **** String prop = e.getPropertyName(); if(prop == JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY) { filters = (FileFilter[]) e.getNewValue(); fireContentsChanged(this, -1, -1); } else if (prop == JFileChooser.FILE_FILTER_CHANGED_PROPERTY) { ! fireContentsChanged(this, -1, -1); } } public void setSelectedItem(Object filter) { ! if(filter != null) { getFileChooser().setFileFilter((FileFilter) filter); fireContentsChanged(this, -1, -1); } } --- 1298,1313 ---- String prop = e.getPropertyName(); if(prop == JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY) { filters = (FileFilter[]) e.getNewValue(); fireContentsChanged(this, -1, -1); } else if (prop == JFileChooser.FILE_FILTER_CHANGED_PROPERTY) { ! setSelectedItem(e.getNewValue()); } } public void setSelectedItem(Object filter) { ! if (filter != null && !containsFileFilter(filter)) { getFileChooser().setFileFilter((FileFilter) filter); fireContentsChanged(this, -1, -1); } }
*** 1351,1371 **** return null; } } } /** * Acts when FilterComboBox has changed the selected item. */ @SuppressWarnings("serial") // Superclass is not serializable across versions protected class FilterComboBoxAction extends AbstractAction { protected FilterComboBoxAction() { super("FilterComboBoxAction"); } public void actionPerformed(final ActionEvent e) { ! getFileChooser().setFileFilter((FileFilter) filterComboBox.getSelectedItem()); } } /** * Acts when DirectoryComboBox has changed the selected item. --- 1351,1378 ---- return null; } } } + private boolean containsFileFilter(Object fileFilter) { + return Objects.equals(fileFilter, getFileChooser().getFileFilter()); + } + /** * Acts when FilterComboBox has changed the selected item. */ @SuppressWarnings("serial") // Superclass is not serializable across versions protected class FilterComboBoxAction extends AbstractAction { protected FilterComboBoxAction() { super("FilterComboBoxAction"); } public void actionPerformed(final ActionEvent e) { ! Object selectedFilter = filterComboBox.getSelectedItem(); ! if (!containsFileFilter(selectedFilter)) { ! getFileChooser().setFileFilter((FileFilter) selectedFilter); ! } } } /** * Acts when DirectoryComboBox has changed the selected item.