* 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:
committed by
Thomas Fitzsimmons
parent
0fcd5ddaa8
commit
b6fa901bc9
@@ -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 ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user