From dfda88585b72f6b2a0898cae636641d838f9ec90 Mon Sep 17 00:00:00 2001 From: Craig Black Date: Mon, 14 Feb 2005 15:54:43 +0000 Subject: 2005-02-14 Craig Black * gnu/java/awt/peer/gtk/GtkCheckboxMenuItem.java (postMenuActionEvent): Implement to notify ItemListeners. * java/awt/CheckboxMenuItem.java (dispatchEventImpl): Update state on ItemEvent. * java/awt/MenuItem.java (processActionEvent): Retarget event source. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/java-gui-20050128-branch@95023 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 9 +++++++++ libjava/gnu/java/awt/peer/gtk/GtkCheckboxMenuItemPeer.java | 13 +++++++++++++ libjava/java/awt/CheckboxMenuItem.java | 8 ++++++++ libjava/java/awt/MenuItem.java | 5 ++++- 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index b034f6baac7..fb54c1fab5c 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,12 @@ +2005-02-14 Craig Black + + * gnu/java/awt/peer/gtk/GtkCheckboxMenuItem.java + (postMenuActionEvent): Implement to notify ItemListeners. + * java/awt/CheckboxMenuItem.java + (dispatchEventImpl): Update state on ItemEvent. + * java/awt/MenuItem.java + (processActionEvent): Retarget event source. + 2005-02-14 Andrew John Hughes * gnu/java/awt/color/ClutProfileConverter.java, diff --git a/libjava/gnu/java/awt/peer/gtk/GtkCheckboxMenuItemPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkCheckboxMenuItemPeer.java index adb7008ca3f..2d1f6500862 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkCheckboxMenuItemPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkCheckboxMenuItemPeer.java @@ -38,6 +38,8 @@ exception statement from your version. */ package gnu.java.awt.peer.gtk; +import java.awt.ItemSelectable; +import java.awt.event.ItemEvent; import java.awt.CheckboxMenuItem; import java.awt.peer.CheckboxMenuItemPeer; import java.awt.peer.MenuItemPeer; @@ -54,4 +56,15 @@ public class GtkCheckboxMenuItemPeer extends GtkMenuItemPeer } native public void setState (boolean t); + + protected void postMenuActionEvent () + { + CheckboxMenuItem item = (CheckboxMenuItem)awtWidget; + q().postEvent (new ItemEvent ((ItemSelectable)awtWidget, + ItemEvent.ITEM_STATE_CHANGED, + item.getActionCommand(), + item.getState() ? ItemEvent.DESELECTED : ItemEvent.SELECTED)); + + super.postMenuActionEvent(); + } } diff --git a/libjava/java/awt/CheckboxMenuItem.java b/libjava/java/awt/CheckboxMenuItem.java index 7056d284220..6b9002ad7aa 100644 --- a/libjava/java/awt/CheckboxMenuItem.java +++ b/libjava/java/awt/CheckboxMenuItem.java @@ -274,6 +274,14 @@ processItemEvent(ItemEvent event) void dispatchEventImpl(AWTEvent e) { + if (e instanceof ItemEvent) + { + synchronized (this) + { + state = (((ItemEvent) e).getStateChange() == ItemEvent.SELECTED); + } + } + if (e.id <= ItemEvent.ITEM_LAST && e.id >= ItemEvent.ITEM_FIRST && (item_listeners != null diff --git a/libjava/java/awt/MenuItem.java b/libjava/java/awt/MenuItem.java index d1f29b31252..56082d36a9a 100644 --- a/libjava/java/awt/MenuItem.java +++ b/libjava/java/awt/MenuItem.java @@ -563,7 +563,10 @@ protected void processActionEvent(ActionEvent event) { if (action_listeners != null) - action_listeners.actionPerformed(event); + { + event.setSource(this); + action_listeners.actionPerformed(event); + } } /*************************************************************************/ -- cgit v1.2.3