diff options
| author | fitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-20 21:05:39 +0000 | 
|---|---|---|
| committer | fitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-20 21:05:39 +0000 | 
| commit | fe6e657ead0263e382d2549fc3fc9b5e6c15a8b3 (patch) | |
| tree | 423331742bb4b07e189a268d6b36af5c2cc302cf /libjava/gnu | |
| parent | a7c785a58c21355a9011271a9cb0b0f28816a8fe (diff) | |
| download | ppe42-gcc-fe6e657ead0263e382d2549fc3fc9b5e6c15a8b3.tar.gz ppe42-gcc-fe6e657ead0263e382d2549fc3fc9b5e6c15a8b3.zip  | |
2004-01-20  Thomas Fitzsimmons  <fitzsim@redhat.com>
	* gnu/java/awt/peer/gtk/GtkTextFieldPeer.java,
	jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c
	(native create): Add width parameter.
	(create): Calculate text entry width based on current font's
	metrics and number of columns.  Set TextField's font if not
	already set.  Call native create.
	(gtkEntryGetBorderWidth): New native method.
	(gtkEntryGetSize): Remove method.
	(getMinimumSize): Call minimumSize.
	(getPreferredSize): Call preferredSize.
	(minimumSize): Calculate minimum size based on backing
	GtkEntry's borders, font metrics and number of columns.
	(preferredSize): Likewise for preferred size.
	(get_border_width): New static function.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76228 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu')
| -rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java | 100 | 
1 files changed, 76 insertions, 24 deletions
diff --git a/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java index 98f55d0717c..8ee06d6f2b3 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java @@ -41,6 +41,7 @@ package gnu.java.awt.peer.gtk;  import java.awt.AWTEvent;  import java.awt.Dimension;  import java.awt.Font; +import java.awt.FontMetrics;  import java.awt.TextField;  import java.awt.event.KeyEvent;  import java.awt.peer.TextFieldPeer; @@ -48,14 +49,38 @@ import java.awt.peer.TextFieldPeer;  public class GtkTextFieldPeer extends GtkTextComponentPeer    implements TextFieldPeer  { +  native void create (int width); -//    native void create (ComponentPeer parent, String text); +  void create () +  { +    Font f = awtComponent.getFont (); + +    // By default, Sun sets a TextField's font when its peer is +    // created.  If f != null then the peer's font is set by +    // GtkComponent.create. +    if (f == null) +      { +	f = new Font ("Fixed", Font.PLAIN, 12); +	awtComponent.setFont (f); +      } -  native void create (); +    FontMetrics fm; +    if (GtkToolkit.useGraphics2D ()) +      fm = new GdkClasspathFontPeerMetrics (f); +    else +      fm = new GdkFontMetrics (f); -  native void gtkEntryGetSize (int dims[]); +    TextField tf = ((TextField) awtComponent); +    int cols = tf.getColumns (); + +    int text_width = cols * fm.getMaxAdvance (); + +    create (text_width); +  } -  native void gtkSetFont(String name, int style, int size); +  native int gtkEntryGetBorderWidth (); + +  native void gtkSetFont (String name, int style, int size);    public GtkTextFieldPeer (TextField tf)    { @@ -67,34 +92,61 @@ public class GtkTextFieldPeer extends GtkTextComponentPeer    public Dimension getMinimumSize (int cols)    { -    int dims[] = new int[2]; - -    gtkEntryGetSize (dims); - -    return (new Dimension (dims[0], dims[1])); +    return minimumSize (cols);    }    public Dimension getPreferredSize (int cols)    { -    int dims[] = new int[2]; - -    gtkEntryGetSize (dims); - -    return (new Dimension (dims[0], dims[1])); +    return preferredSize (cols);    } -   -  public native void setEchoChar (char c); -  /* Deprecated */ +  public native void setEchoChar (char c); +  // Deprecated    public Dimension minimumSize (int cols)    { -    return getMinimumSize (cols); +    int dim[] = new int[2]; + +    gtkWidgetGetPreferredDimensions (dim); + +    Font f = awtComponent.getFont (); +    if (f == null) +      return new Dimension (2 * gtkEntryGetBorderWidth (), dim[1]); + +    FontMetrics fm; +    if (GtkToolkit.useGraphics2D ()) +      fm = new GdkClasspathFontPeerMetrics (f); +    else +      fm = new GdkFontMetrics (f); + +    int text_width = cols * fm.getMaxAdvance (); + +    int width = text_width + 2 * gtkEntryGetBorderWidth (); + +    return new Dimension (width, dim[1]);    }    public Dimension preferredSize (int cols)    { -    return getPreferredSize (cols); +    int dim[] = new int[2]; + +    gtkWidgetGetPreferredDimensions (dim); + +    Font f = awtComponent.getFont (); +    if (f == null) +      return new Dimension (2 * gtkEntryGetBorderWidth (), dim[1]); + +    FontMetrics fm; +    if (GtkToolkit.useGraphics2D ()) +      fm = new GdkClasspathFontPeerMetrics (f); +    else +      fm = new GdkFontMetrics (f); + +    int text_width = cols * fm.getMaxAdvance (); + +    int width = text_width + 2 * gtkEntryGetBorderWidth (); + +    return new Dimension (width, dim[1]);    }    public void setEchoCharacter (char c) @@ -104,18 +156,18 @@ public class GtkTextFieldPeer extends GtkTextComponentPeer    public void setFont (Font f)    { -    gtkSetFont(f.getName(), f.getStyle(), f.getSize()); +    gtkSetFont (f.getName (), f.getStyle (), f.getSize ());    }    public void handleEvent (AWTEvent e)    {      if (e.getID () == KeyEvent.KEY_PRESSED)        { -        KeyEvent ke = (KeyEvent)e; +        KeyEvent ke = (KeyEvent) e; -        if (!ke.isConsumed() -            && ke.getKeyCode() == KeyEvent.VK_ENTER) -          postActionEvent (getText(), ke.getModifiers ()); +        if (!ke.isConsumed () +            && ke.getKeyCode () == KeyEvent.VK_ENTER) +          postActionEvent (getText (), ke.getModifiers ());        }      super.handleEvent (e);  | 

