diff options
| author | fnasser <fnasser@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-05 21:18:06 +0000 |
|---|---|---|
| committer | fnasser <fnasser@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-05 21:18:06 +0000 |
| commit | 70c2647f1e8cbb06cc8004c651344ab09281a8c4 (patch) | |
| tree | 3b896cc9aa5303dfe9b469323979c8ef4746d208 /libjava/gnu/java | |
| parent | c7ed85c9040308feec4bb428ddc6657a6d0c068e (diff) | |
| download | ppe42-gcc-70c2647f1e8cbb06cc8004c651344ab09281a8c4.tar.gz ppe42-gcc-70c2647f1e8cbb06cc8004c651344ab09281a8c4.zip | |
2004-01-05 Fernando Nasser <fnasser@redhat.com>
* java/awt/Choice.java (add): Leave posting of ItemEvents to peer.
(insert): Ditto.
(remove): Ditto. Also, Check for valid argument.
(removeAll): Use peer interface method.
* gnu/java/awt/peer/gtk/GtkChoicePeer.java (nativeAdd): New name for
native add function.
(nativeRemove): New name for native remove function.
(getHistory): New native function.
(constructor): Generate ItemEvent.
(add): Ditto, if selection is changed.
(remove): Ditto, ditto.
(removeAll): Add implementation.
(handleEvent): Remove. Dead code.
(choicePostItemEvent): Add comment.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkChoicePeer.c
(Java_gnu_java_awt_peer_gtk_GtkChoicePeer_append): Add comments.
(Java_gnu_java_awt_peer_gtk_GtkChoicePeer_add): Rename to...
(Java_gnu_java_awt_peer_gtk_GtkChoicePeer_nativeAdd): New name. Add
comments and fix condition to change selection.
(Java_gnu_java_awt_peer_gtk_GtkChoicePeer_remove): Rename to...
(Java_gnu_java_awt_peer_gtk_GtkChoicePeer_nativeRemove): New name. Add
remove all capability.
(Java_gnu_java_awt_peer_gtk_GtkChoicePeer_getHistory): New function.
(item_activate): Add cast to remove compiler warning.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75443 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/java')
| -rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkChoicePeer.java | 65 |
1 files changed, 50 insertions, 15 deletions
diff --git a/libjava/gnu/java/awt/peer/gtk/GtkChoicePeer.java b/libjava/gnu/java/awt/peer/gtk/GtkChoicePeer.java index 7e5579b3bc7..a03a410508c 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkChoicePeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkChoicePeer.java @@ -38,6 +38,7 @@ exception statement from your version. */ package gnu.java.awt.peer.gtk; +import java.awt.AWTEvent; import java.awt.Choice; import java.awt.event.ItemEvent; import java.awt.peer.ChoicePeer; @@ -45,8 +46,6 @@ import java.awt.peer.ChoicePeer; public class GtkChoicePeer extends GtkComponentPeer implements ChoicePeer { - native void create (); - public GtkChoicePeer (Choice c) { super (c); @@ -59,35 +58,71 @@ public class GtkChoicePeer extends GtkComponentPeer items[i] = c.getItem (i); append (items); + + // Must set our state before notifying listeners + ((Choice) awtComponent).select (c.getItem (0)); + postItemEvent (c.getItem (0), ItemEvent.SELECTED); } } + native void create (); + native void append (String items[]); + native int getHistory (); + native void nativeAdd (String item, int index); + native void nativeRemove (int index); - native public void add (String item, int index); - native public void remove (int index); native public void select (int position); - public void removeAll () { } - - public void addItem (String item, int position) + public void add (String item, int index) { - add (item, position); + int before = getHistory(); + + nativeAdd (item, index); + + /* Generate an ItemEvent if we added the first one or + if we inserted at or before the currently selected item. */ + if ((before < 0) || (before >= index)) + { + // Must set our state before notifying listeners + ((Choice) awtComponent).select (((Choice) awtComponent).getItem (0)); + postItemEvent (((Choice) awtComponent).getItem (0), ItemEvent.SELECTED); + } + } + + public void remove (int index) + { + int before = getHistory(); + int after; + + nativeRemove (index); + after = getHistory(); + + /* Generate an ItemEvent if we are removing the currently selected item + and there are at least one item left. */ + if ((before == index) && (after >= 0)) + { + // Must set our state before notifying listeners + ((Choice) awtComponent).select (((Choice) awtComponent).getItem (0)); + postItemEvent (((Choice) awtComponent).getItem (0), ItemEvent.SELECTED); + } + } + + public void removeAll () + { + nativeRemove (-1); } - /* - public void handleEvent (AWTEvent event) + public void addItem (String item, int position) { - if (event instanceof ItemEvent) - ((Choice) awtComponent).select ((String) ((ItemEvent)event).getItem ()); - super.handleEvent (event); + add (item, position); } - */ protected void choicePostItemEvent (String label, int stateChange) { + // Must set our state before notifying listeners if (stateChange == ItemEvent.SELECTED) ((Choice) awtComponent).select (label); - super.postItemEvent (label, stateChange); + postItemEvent (label, stateChange); } } |

