classpath-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cp-patches] FYI: Fixed ToggleButtonModel events


From: Roman Kennke
Subject: [cp-patches] FYI: Fixed ToggleButtonModel events
Date: Fri, 22 Jul 2005 14:35:28 +0200
User-agent: Mozilla Thunderbird 1.0.2 (X11/20050317)

Hi,

I fixed the order in which ChangeEvents get fired in the ToggleButtonModel.

2005-07-22  Roman Kennke  <address@hidden>

        * javax/swing/JToggleButton.java
        (ToggleButtonModel.setPressed): Fixed order in which events
        get fired.

/Roman
Index: javax/swing/JToggleButton.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/JToggleButton.java,v
retrieving revision 1.24
diff -u -r1.24 JToggleButton.java
--- javax/swing/JToggleButton.java      21 Jul 2005 14:59:31 -0000      1.24
+++ javax/swing/JToggleButton.java      22 Jul 2005 12:33:07 -0000
@@ -145,7 +145,20 @@
       // if this call does not represent a CHANGE in state, then return
       if ((p && isPressed()) || (!p && !isPressed()))
         return;
-      
+
+      // The JDK first fires events in the following order:
+      // 1. ChangeEvent for selected
+      // 2. ChangeEvent for pressed
+      // 3. ActionEvent
+      // So do we.
+
+      // setPressed(false) == mouse release on us,
+      // if we were armed, we flip the selected state.
+      if (!p && isArmed())
+        {
+          setSelected(! isSelected());
+        }
+
       // make the change
       if (p)
         stateMask = stateMask | PRESSED;
@@ -154,16 +167,14 @@
       
       // notify interested ChangeListeners
       fireStateChanged();
-      
-      // setPressed(false) == mouse release on us,
-      // if we were armed, we flip the selected state.
+
       if (!p && isArmed())
         {
           fireActionPerformed(new ActionEvent(this,
                                               ActionEvent.ACTION_PERFORMED,
                                               actionCommand));
-          setSelected(! isSelected());
         }
+
     }
   }
 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]