* 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
This commit is contained in:
Thomas Fitzsimmons 2003-07-07 19:56:04 +00:00 committed by Thomas Fitzsimmons
parent 0fcd5ddaa8
commit b6fa901bc9
8 changed files with 146 additions and 30 deletions

View file

@ -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 ();
}
}
}