I committed this patch:
2005-09-18 David Gilbert <[EMAIL PROTECTED]>
* javax/swing/plaf/basic/BasicComboBoxUI.java
(installListeners): add listener to arrowButton instead of comboBox,
deleted call to configureArrowButton(),
(uninstallListeners): remove listener from arrowButton instead of
comboBox, and deleted call to unconfigureArrowButton(),
(configureArrowButton): set font and enabled state, deleted
addMouseListener() call,
(unconfigureArrowButton): deleted removeMouseListener() call,
(MouseHandler.mousePressed): just toggle display status of popup,
(MouseHandler.mouseReleased): deleted.
The configureArrowButton() method adds a listener to the button - I've moved this to
the installListeners() method, replacing the listener that is added to the comboBox
(because BasicComboPopup takes care of adding a listener to the comboBox). Likewise
for removing the listener. The configureArrowButton() is changed to set the enabled
status of the button, as well as the font (not necessary for the BasicLookAndFeel,
but it seems to help with the MetalLookAndFeel). The MouseHandler is simplified to
just toggle the appearance of the popup menu.
Regards,
Dave
Index: javax/swing/plaf/basic/BasicComboBoxUI.java
===================================================================
RCS file:
/cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicComboBoxUI.java,v
retrieving revision 1.14
diff -u -r1.14 BasicComboBoxUI.java
--- javax/swing/plaf/basic/BasicComboBoxUI.java 18 Sep 2005 13:39:54 -0000
1.14
+++ javax/swing/plaf/basic/BasicComboBoxUI.java 18 Sep 2005 13:55:33 -0000
@@ -289,13 +289,11 @@
comboBox.addKeyListener(keyListener);
mouseListener = createMouseListener();
- comboBox.addMouseListener(mouseListener);
+ arrowButton.addMouseListener(mouseListener);
// install listeners that listen to combo box model
listDataListener = createListDataListener();
comboBox.getModel().addListDataListener(listDataListener);
-
- configureArrowButton();
}
/**
@@ -339,13 +337,11 @@
comboBox.removeKeyListener(keyListener);
keyListener = null;
- comboBox.removeMouseListener(mouseListener);
+ arrowButton.removeMouseListener(mouseListener);
mouseListener = null;
comboBox.getModel().removeListDataListener(listDataListener);
listDataListener = null;
-
- unconfigureArrowButton();
}
/**
@@ -555,7 +551,8 @@
*/
public void configureArrowButton()
{
- arrowButton.addMouseListener(mouseListener);
+ arrowButton.setEnabled(comboBox.isEnabled());
+ arrowButton.setFont(comboBox.getFont());
}
/**
@@ -565,7 +562,6 @@
*/
public void unconfigureArrowButton()
{
- arrowButton.removeMouseListener(mouseListener);
}
/**
@@ -1270,38 +1266,7 @@
public void mousePressed(MouseEvent e)
{
if (comboBox.isEnabled())
- {
- if (e.getSource() instanceof JComboBox)
- {
- arrowButton.getModel().setPressed(true);
- arrowButton.getModel().setArmed(true);
- }
-
- comboBox.repaint();
-
- if (e.getSource() instanceof BasicArrowButton)
- toggleOpenClose();
- }
- }
-
- /**
- * This method is invoked when mouse is released over the combo box. It
- * repaints the combo box accordinglly
- *
- * @param e the MouseEvent
- */
- public void mouseReleased(MouseEvent e)
- {
- if (comboBox.isEnabled())
- {
- if (e.getSource() instanceof JComboBox)
- {
- arrowButton.getModel().setPressed(false);
- arrowButton.getModel().setArmed(false);
- }
-
- comboBox.repaint();
- }
+ toggleOpenClose();
}
}
}
_______________________________________________
Classpath-patches mailing list
Classpath-patches@gnu.org
http://lists.gnu.org/mailman/listinfo/classpath-patches