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.