diff options
Diffstat (limited to 'libjava/classpath/java/awt/Checkbox.java')
-rw-r--r-- | libjava/classpath/java/awt/Checkbox.java | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/libjava/classpath/java/awt/Checkbox.java b/libjava/classpath/java/awt/Checkbox.java index 93f60924723..eea443edf74 100644 --- a/libjava/classpath/java/awt/Checkbox.java +++ b/libjava/classpath/java/awt/Checkbox.java @@ -1,5 +1,6 @@ /* Checkbox.java -- An AWT checkbox widget - Copyright (C) 1999, 2000, 2001, 2002, 2005 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2002, 2005, 2006 + Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -459,11 +460,14 @@ getState() public synchronized void setState(boolean state) { - this.state = state; - if (peer != null) + if (this.state != state) { - CheckboxPeer cp = (CheckboxPeer) peer; - cp.setState (state); + this.state = state; + if (peer != null) + { + CheckboxPeer cp = (CheckboxPeer) peer; + cp.setState (state); + } } } @@ -599,10 +603,15 @@ void dispatchEventImpl(AWTEvent e) { if (e.id <= ItemEvent.ITEM_LAST - && e.id >= ItemEvent.ITEM_FIRST - && (item_listeners != null - || (eventMask & AWTEvent.ITEM_EVENT_MASK) != 0)) - processEvent(e); + && e.id >= ItemEvent.ITEM_FIRST) + { + ItemEvent ie = (ItemEvent) e; + int itemState = ie.getStateChange(); + setState(itemState == ItemEvent.SELECTED ? true : false); + if (item_listeners != null + || (eventMask & AWTEvent.ITEM_EVENT_MASK) != 0) + processEvent(e); + } else super.dispatchEventImpl(e); } |