diff options
author | Thomas Fitzsimmons <fitzsim@redhat.com> | 2003-07-07 19:56:04 +0000 |
---|---|---|
committer | Thomas Fitzsimmons <fitzsim@gcc.gnu.org> | 2003-07-07 19:56:04 +0000 |
commit | b6fa901bc961f54ec9b24c77538f159ad6736d20 (patch) | |
tree | bdfd6dd308f68b299b088d16dcb5e0de8da7b995 /libjava/gnu/java | |
parent | 0fcd5ddaa80596940cb2accd8a74f4ceae75fea5 (diff) | |
download | gcc-b6fa901bc961f54ec9b24c77538f159ad6736d20.zip gcc-b6fa901bc961f54ec9b24c77538f159ad6736d20.tar.gz gcc-b6fa901bc961f54ec9b24c77538f159ad6736d20.tar.bz2 |
* gnu/java/awt/peer/gtk/GtkTextComponentPeer.java
(setCaretPosition, setEditable): Rely entirely on native
implementation.
(getArgs): Remove.
(postTextEvent): New method.
(handleEvent): New method.
* gnu/java/awt/peer/gtk/GtkTextFieldPeer.java (handleEvent): New
method.
* java/awt/event/ActionEvent.java (paramString): Fix formatting.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
(keysym_to_awt_keycode): Fix range checks.
(generates_key_typed_event): New function.
(awt_event_handler): Post AWT_KEY_RELEASED events to event
queue.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c
(gtkInit): Store TextComponent's postTextEvent method ID.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c
(setText): Post TEXT_VALUE_CHANGED event to event queue.
From-SVN: r69054
Diffstat (limited to 'libjava/gnu/java')
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkTextComponentPeer.java | 42 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java | 15 |
2 files changed, 36 insertions, 21 deletions
diff --git a/libjava/gnu/java/awt/peer/gtk/GtkTextComponentPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkTextComponentPeer.java index d9ebd40..102e439 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkTextComponentPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkTextComponentPeer.java @@ -39,6 +39,7 @@ exception statement from your version. */ package gnu.java.awt.peer.gtk; import java.awt.peer.*; import java.awt.*; +import java.awt.event.*; public class GtkTextComponentPeer extends GtkComponentPeer implements TextComponentPeer @@ -51,32 +52,14 @@ public class GtkTextComponentPeer extends GtkComponentPeer } public native int getCaretPosition (); - public void setCaretPosition (int pos) - { - set ("text_position", pos); - } + public native void setCaretPosition (int pos); public native int getSelectionStart (); public native int getSelectionEnd (); public native String getText (); public native void select (int start, int end); - - public void setEditable (boolean state) - { - set ("editable", state); - } - + public native void setEditable (boolean state); public native void setText (String text); - - public void getArgs (Component component, GtkArgList args) - { - super.getArgs (component, args); - - TextComponent tc = (TextComponent) component; - - args.add ("text_position", tc.getCaretPosition ()); - args.add ("editable", tc.isEditable ()); - } - + public int getIndexAtPoint(int x, int y) { return 0; // FIXME @@ -91,4 +74,21 @@ public class GtkTextComponentPeer extends GtkComponentPeer { return filter; // FIXME } + + protected void postTextEvent () + { + q.postEvent (new TextEvent (awtComponent, TextEvent.TEXT_VALUE_CHANGED)); + } + + public void handleEvent (AWTEvent e) + { + if (e.getID () == KeyEvent.KEY_TYPED + && ((TextComponent)e.getSource()).isEditable()) + { + KeyEvent ke = (KeyEvent)e; + + if (!ke.isConsumed()) + postTextEvent (); + } + } } diff --git a/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java index 628cdd6..05112d1 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java @@ -37,6 +37,7 @@ exception statement from your version. */ package gnu.java.awt.peer.gtk; +import java.awt.event.KeyEvent; import java.awt.peer.*; import java.awt.*; @@ -102,4 +103,18 @@ public class GtkTextFieldPeer extends GtkTextComponentPeer { gtkSetFont(((GtkFontPeer)f.getPeer()).getXLFD(), f.getSize()); } + + public void handleEvent (AWTEvent e) + { + if (e.getID () == KeyEvent.KEY_PRESSED) + { + KeyEvent ke = (KeyEvent)e; + + if (!ke.isConsumed() + && ke.getKeyCode() == KeyEvent.VK_ENTER) + postActionEvent (getText(), ke.getModifiers ()); + } + + super.handleEvent (e); + } } |