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

Reply via email to