diff options
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 d9ebd40aa72..102e43973a1 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 628cdd627ae..05112d16b8b 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); + } } |

