Fix hiding popups after selection
This commit is contained in:
parent
9f0b7c9b15
commit
370e6bffd7
@ -305,9 +305,6 @@ public class SearchableAndCategorizableComboBox<G extends Group, T extends Group
|
||||
T selectedItem = filteredList.getSelectedValue();
|
||||
if (selectedItem != null) {
|
||||
SearchableAndCategorizableComboBox.this.setSelectedItem(selectedItem);
|
||||
fireActionEvent();
|
||||
// Hide the popups after selection
|
||||
hidePopups();
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -340,6 +337,13 @@ public class SearchableAndCategorizableComboBox<G extends Group, T extends Group
|
||||
return targetItem != null && targetItem.getGroup().equals(group);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelectedItem(Object anObject) {
|
||||
// Hide the popups after selection
|
||||
hidePopups();
|
||||
super.setSelectedItem(anObject);
|
||||
}
|
||||
|
||||
private void filter(String text) {
|
||||
filteredList.removeAll();
|
||||
String searchText = text.toLowerCase();
|
||||
@ -376,20 +380,6 @@ public class SearchableAndCategorizableComboBox<G extends Group, T extends Group
|
||||
return categoryPopup.isVisible() || searchPopup.isVisible();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Override the default action keys (escape, enter, arrow keys) to do our own actions.
|
||||
* @param e the key event
|
||||
*/
|
||||
private void overrideActionKeys(KeyEvent e) {
|
||||
switch (e.getKeyCode()) {
|
||||
case KeyEvent.VK_ESCAPE -> hidePopups();
|
||||
case KeyEvent.VK_ENTER -> selectHighlightedItemInFilteredList();
|
||||
case KeyEvent.VK_DOWN, KeyEvent.VK_RIGHT -> highlightNextItemInFilteredList();
|
||||
case KeyEvent.VK_UP, KeyEvent.VK_LEFT -> highlightPreviousItemInFilteredList();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Select the highlighted item in the filtered list and hide the popups.
|
||||
*/
|
||||
@ -405,10 +395,11 @@ public class SearchableAndCategorizableComboBox<G extends Group, T extends Group
|
||||
*/
|
||||
private void highlightNextItemInFilteredList() {
|
||||
if (highlightedListIdx + 1 >= filteredList.getModel().getSize() || !searchPopup.isVisible()) {
|
||||
highlightedListIdx++;
|
||||
filteredList.ensureIndexIsVisible(highlightedListIdx);
|
||||
filteredList.repaint();
|
||||
return;
|
||||
}
|
||||
highlightedListIdx++;
|
||||
filteredList.ensureIndexIsVisible(highlightedListIdx);
|
||||
filteredList.repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -558,6 +549,23 @@ public class SearchableAndCategorizableComboBox<G extends Group, T extends Group
|
||||
showCategoryPopup();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Override the default action keys (escape, enter, arrow keys) to do our own actions.
|
||||
* @param e the key event
|
||||
*/
|
||||
private void overrideActionKeys(KeyEvent e) {
|
||||
switch (e.getKeyCode()) {
|
||||
case KeyEvent.VK_ESCAPE -> hidePopups();
|
||||
case KeyEvent.VK_ENTER -> selectHighlightedItemInFilteredList();
|
||||
case KeyEvent.VK_DOWN -> highlightNextItemInFilteredList();
|
||||
case KeyEvent.VK_UP -> highlightPreviousItemInFilteredList();
|
||||
default -> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
e.consume();
|
||||
}
|
||||
}
|
||||
|
||||
private class FilteredListCellRenderer extends DefaultListCellRenderer {
|
||||
|
Loading…
x
Reference in New Issue
Block a user