src/java.desktop/macosx/classes/com/apple/laf/AquaFileChooserUI.java
Print this page
@@ -1298,16 +1298,16 @@
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);
+ setSelectedItem(e.getNewValue());
}
}
public void setSelectedItem(Object filter) {
- if(filter != null) {
+ if (filter != null && !containsFileFilter(filter)) {
getFileChooser().setFileFilter((FileFilter) filter);
fireContentsChanged(this, -1, -1);
}
}
@@ -1351,21 +1351,28 @@
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) {
- getFileChooser().setFileFilter((FileFilter) filterComboBox.getSelectedItem());
+ Object selectedFilter = filterComboBox.getSelectedItem();
+ if (!containsFileFilter(selectedFilter)) {
+ getFileChooser().setFileFilter((FileFilter) selectedFilter);
+ }
}
}
/**
* Acts when DirectoryComboBox has changed the selected item.