The JComboBox has been broken due to some focus related issues. This is
now fixed.
2005-12-19 Roman Kennke <[EMAIL PROTECTED]>
* javax/swing/plaf/basic/BasicComboBoxUI.java
(installListeners): Install focus listener only on editor.
(configureArrowButton): Make arrow button not focusable.
(setPopupVisible): Request focus for the combobox editor or
comboBox,
depending on whether the combobox is editable or not.
* javax/swing/plaf/basic/BasicComboPopup.java
(configureList): Make list not focusable.
/Roman
Index: javax/swing/plaf/basic/BasicComboPopup.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicComboPopup.java,v
retrieving revision 1.11
diff -u -r1.11 BasicComboPopup.java
--- javax/swing/plaf/basic/BasicComboPopup.java 14 Nov 2005 12:44:49 -0000 1.11
+++ javax/swing/plaf/basic/BasicComboPopup.java 19 Dec 2005 09:43:37 -0000
@@ -442,6 +442,7 @@
{
list.setModel(comboBox.getModel());
list.setVisibleRowCount(comboBox.getMaximumRowCount());
+ list.setFocusable(false);
installListListeners();
}
Index: javax/swing/plaf/basic/BasicComboBoxUI.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicComboBoxUI.java,v
retrieving revision 1.30
diff -u -r1.30 BasicComboBoxUI.java
--- javax/swing/plaf/basic/BasicComboBoxUI.java 21 Nov 2005 22:20:22 -0000 1.30
+++ javax/swing/plaf/basic/BasicComboBoxUI.java 19 Dec 2005 09:43:37 -0000
@@ -294,8 +294,7 @@
comboBox.addPropertyChangeListener(propertyChangeListener);
focusListener = createFocusListener();
- comboBox.addFocusListener(focusListener);
- listBox.addFocusListener(focusListener);
+ editor.addFocusListener(focusListener);
itemListener = createItemListener();
comboBox.addItemListener(itemListener);
@@ -572,6 +571,7 @@
{
arrowButton.setEnabled(comboBox.isEnabled());
arrowButton.setFont(comboBox.getFont());
+ arrowButton.setFocusable(false);
}
/**
@@ -624,12 +624,14 @@
public void setPopupVisible(JComboBox c, boolean v)
{
if (v)
- {
- popup.show();
- popup.getList().requestFocus();
- }
+ popup.show();
else
popup.hide();
+
+ if (comboBox.isEditable())
+ editor.requestFocus();
+ else
+ comboBox.requestFocus();
}
/**
_______________________________________________
Classpath-patches mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/classpath-patches