## GtkEntry

GtkEntry — A single line text entry field

## Synopsis

    #include <gtk/gtk.h>

                        GtkEntry;
    GtkWidget*          gtk_entry_new                       (void);
    GtkWidget*          gtk_entry_new_with_max_length       (gint max);
    void                gtk_entry_set_text                  (GtkEntry *entry,
                                                             const gchar *text);
    void                gtk_entry_append_text               (GtkEntry *entry,
                                                             const gchar *text);
    void                gtk_entry_prepend_text              (GtkEntry *entry,
                                                             const gchar *text);
    void                gtk_entry_set_position              (GtkEntry *entry,
                                                             gint position);
    const gchar*        gtk_entry_get_text                  (GtkEntry *entry);
    void                gtk_entry_select_region             (GtkEntry *entry,
                                                             gint start,
                                                             gint end);
    void                gtk_entry_set_visibility            (GtkEntry *entry,
                                                             gboolean visible);
    void                gtk_entry_set_invisible_char        (GtkEntry *entry,
                                                             gunichar ch);
    void                gtk_entry_set_editable              (GtkEntry *entry,
                                                             gboolean editable);
    void                gtk_entry_set_max_length            (GtkEntry *entry,
                                                             gint max);
    gboolean            gtk_entry_get_activates_default     (GtkEntry *entry);
    gboolean            gtk_entry_get_has_frame             (GtkEntry *entry);
    const GtkBorder*    gtk_entry_get_inner_border          (GtkEntry *entry);
    gint                gtk_entry_get_width_chars           (GtkEntry *entry);
    void                gtk_entry_set_activates_default     (GtkEntry *entry,
                                                             gboolean setting);
    void                gtk_entry_set_has_frame             (GtkEntry *entry,
                                                             gboolean setting);
    void                gtk_entry_set_inner_border          (GtkEntry *entry,
                                                             const GtkBorder *border);
    void                gtk_entry_set_width_chars           (GtkEntry *entry,
                                                             gint n_chars);
    gunichar            gtk_entry_get_invisible_char        (GtkEntry *entry);
    void                gtk_entry_set_alignment             (GtkEntry *entry,
                                                             gfloat xalign);
    gfloat              gtk_entry_get_alignment             (GtkEntry *entry);
    PangoLayout*        gtk_entry_get_layout                (GtkEntry *entry);
    void                gtk_entry_get_layout_offsets        (GtkEntry *entry,
                                                             gint *x,
                                                             gint *y);
    gint                gtk_entry_layout_index_to_text_index
                                                            (GtkEntry *entry,
                                                             gint layout_index);
    gint                gtk_entry_text_index_to_layout_index
                                                            (GtkEntry *entry,
                                                             gint text_index);
    gint                gtk_entry_get_max_length            (GtkEntry *entry);
    gboolean            gtk_entry_get_visibility            (GtkEntry *entry);
    void                gtk_entry_set_completion            (GtkEntry *entry,
                                                             GtkEntryCompletion *completion);
    GtkEntryCompletion* gtk_entry_get_completion            (GtkEntry *entry);
    void                gtk_entry_set_cursor_hadjustment    (GtkEntry *entry,
                                                             GtkAdjustment *adjustment);
    GtkAdjustment*      gtk_entry_get_cursor_hadjustment    (GtkEntry *entry);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----GtkObject
                   +----GtkWidget
                         +----GtkEntry
                               +----GtkSpinButton

## Implemented Interfaces

GtkEntry implements AtkImplementorIface, GtkBuildable, GtkCellEditable and GtkEditable.

## Properties

      "activates-default"        gboolean              : Read / Write
      "cursor-position"          gint                  : Read
      "editable"                 gboolean              : Read / Write
      "has-frame"                gboolean              : Read / Write
      "inner-border"             GtkBorder*            : Read / Write
      "invisible-char"           guint                 : Read / Write
      "max-length"               gint                  : Read / Write
      "scroll-offset"            gint                  : Read
      "selection-bound"          gint                  : Read
      "shadow-type"              GtkShadowType         : Read / Write
      "text"                     gchar*                : Read / Write
      "truncate-multiline"       gboolean              : Read / Write
      "visibility"               gboolean              : Read / Write
      "width-chars"              gint                  : Read / Write
      "xalign"                   gfloat                : Read / Write

## Style Properties

      "inner-border"             GtkBorder*            : Read

## Signals

      "activate"                                       : Run Last / Action
      "backspace"                                      : Run Last / Action
      "copy-clipboard"                                 : Run Last / Action
      "cut-clipboard"                                  : Run Last / Action
      "delete-from-cursor"                             : Run Last / Action
      "insert-at-cursor"                               : Run Last / Action
      "move-cursor"                                    : Run Last / Action
      "paste-clipboard"                                : Run Last / Action
      "populate-popup"                                 : Run Last
      "toggle-overwrite"                               : Run Last / Action

## Description

The GtkEntry widget is a single line text entry widget. A fairly large set of key bindings are supported by default. If the entered text is longer than the allocation of the widget, the widget will scroll so that the cursor position is visible.

## Details

### GtkEntry

    typedef struct _GtkEntry GtkEntry;

The GtkEntry struct contains only private data.

### gtk_entry_new ()

    GtkWidget*          gtk_entry_new                       (void);

Creates a new entry.

Returns : | a new GtkEntry.

### gtk_entry_new_with_max_length ()

    GtkWidget*          gtk_entry_new_with_max_length       (gint max);

### Warning

`gtk_entry_new_with_max_length` is deprecated and should not be used in newly-written code.

Creates a new GtkEntry widget with the given maximum length.

Note: the existence of this function is inconsistent with the rest of the GTK+ API. The normal setup would be to just require the user to make an extra call to `gtk_entry_set_max_length()` instead. It is not expected that this function will be removed, but it would be better practice not to use it.

`max` : | the maximum length of the entry, or 0 for no maximum. (other than the maximum length of entries.) The value passed in will be clamped to the range 0-65536.
Returns : | a new GtkEntry.

### gtk_entry_set_text ()

    void                gtk_entry_set_text                  (GtkEntry *entry,
                                                             const gchar *text);

Sets the text in the widget to the given value, replacing the current contents.

`entry` : | a GtkEntry
`text` : | the new text

### gtk_entry_append_text ()

    void                gtk_entry_append_text               (GtkEntry *entry,
                                                             const gchar *text);

### Warning

`gtk_entry_append_text` is deprecated and should not be used in newly-written code. `gtk_entry_append_text()` is deprecated and should not be used in newly-written code. Use `gtk_editable_insert_text()` instead.

Appends the given text to the contents of the widget.

`entry` : | a GtkEntry
`text` : | the text to append

### gtk_entry_prepend_text ()

    void                gtk_entry_prepend_text              (GtkEntry *entry,
                                                             const gchar *text);

### Warning

`gtk_entry_prepend_text` is deprecated and should not be used in newly-written code. `gtk_entry_prepend_text()` is deprecated and should not be used in newly-written code. Use `gtk_editable_insert_text()` instead.

Prepends the given text to the contents of the widget.

`entry` : | a GtkEntry
`text` : | the text to prepend

### gtk_entry_set_position ()

    void                gtk_entry_set_position              (GtkEntry *entry,
                                                             gint position);

### Warning

`gtk_entry_set_position` is deprecated and should not be used in newly-written code. Use `gtk_editable_set_position()` instead.

Sets the cursor position in an entry to the given value.

`entry` : | a GtkEntry
`position` : | the position of the cursor. The cursor is displayed before the character with the given (base 0) index in the widget. The value must be less than or equal to the number of characters in the widget. A value of -1 indicates that the position should be set after the last character in the entry. Note that this position is in characters, not in bytes.

### gtk_entry_get_text ()

    const gchar*        gtk_entry_get_text                  (GtkEntry *entry);

Retrieves the contents of the entry widget. See also `gtk_editable_get_chars()`.

`entry` : | a GtkEntry
Returns : | a pointer to the contents of the widget as a string. This string points to internally allocated storage in the widget and must not be freed, modified or stored.

### gtk_entry_select_region ()

    void                gtk_entry_select_region             (GtkEntry *entry,
                                                             gint start,
                                                             gint end);

### Warning

`gtk_entry_select_region` is deprecated and should not be used in newly-written code. Use `gtk_editable_select_region()` instead.

Selects a region of text. The characters that are selected are those characters at positions from `start_pos` up to, but not including `end_pos`. If `end_pos` is negative, then the the characters selected will be those characters from `start_pos` to the end of the text.

`entry` : | a GtkEntry
`start` : | the starting position
`end` : | the end position

### gtk_entry_set_visibility ()

    void                gtk_entry_set_visibility            (GtkEntry *entry,
                                                             gboolean visible);

Sets whether the contents of the entry are visible or not. When visibility is set to `FALSE`, characters are displayed as the invisible char, and will also appear that way when the text in the entry widget is copied elsewhere.

The default invisible char is the asterisk '*', but it can be changed with `gtk_entry_set_invisible_char()`.

`entry` : | a GtkEntry
`visible` : | `TRUE` if the contents of the entry are displayed as plaintext

### gtk_entry_set_invisible_char ()

    void                gtk_entry_set_invisible_char        (GtkEntry *entry,
                                                             gunichar ch);

Sets the character to use in place of the actual text when `gtk_entry_set_visibility()` has been called to set text visibility to `FALSE`. i.e. this is the character used in "password mode" to show the user how many characters have been typed. The default invisible char is an asterisk ('*'). If you set the invisible char to 0, then the user will get no feedback at all; there will be no text on the screen as they type.

`entry` : | a GtkEntry
`ch` : | a Unicode character

### gtk_entry_set_editable ()

    void                gtk_entry_set_editable              (GtkEntry *entry,
                                                             gboolean editable);

### Warning

`gtk_entry_set_editable` is deprecated and should not be used in newly-written code. Use `gtk_editable_set_editable()` instead.

Determines if the user can edit the text in the editable widget or not.

`entry` : | a GtkEntry
`editable` : | `TRUE` if the user is allowed to edit the text in the widget

### gtk_entry_set_max_length ()

    void                gtk_entry_set_max_length            (GtkEntry *entry,
                                                             gint max);

Sets the maximum allowed length of the contents of the widget. If the current contents are longer than the given length, then they will be truncated to fit.

`entry` : | a GtkEntry
`max` : | the maximum length of the entry, or 0 for no maximum. (other than the maximum length of entries.) The value passed in will be clamped to the range 0-65536.

### gtk_entry_get_activates_default ()

    gboolean            gtk_entry_get_activates_default     (GtkEntry *entry);

Retrieves the value set by `gtk_entry_set_activates_default()`.

`entry` : | a GtkEntry
Returns : | `TRUE` if the entry will activate the default widget

### gtk_entry_get_has_frame ()

    gboolean            gtk_entry_get_has_frame             (GtkEntry *entry);

Gets the value set by `gtk_entry_set_has_frame()`.

`entry` : | a GtkEntry
Returns : | whether the entry has a beveled frame

### gtk_entry_get_inner_border ()

    const GtkBorder*    gtk_entry_get_inner_border          (GtkEntry *entry);

This function returns the entry's "inner-border" property. See `gtk_entry_set_inner_border()` for more information.

`entry` : | a GtkEntry
Returns : | the entry's GtkBorder, or `NULL` if none was set.

Since 2.10

### gtk_entry_get_width_chars ()

    gint                gtk_entry_get_width_chars           (GtkEntry *entry);

Gets the value set by `gtk_entry_set_width_chars()`.

`entry` : | a GtkEntry
Returns : | number of chars to request space for, or negative if unset

### gtk_entry_set_activates_default ()

    void                gtk_entry_set_activates_default     (GtkEntry *entry,
                                                             gboolean setting);

If `setting` is `TRUE`, pressing Enter in the `entry` will activate the default widget for the window containing the entry. This usually means that the dialog box containing the entry will be closed, since the default widget is usually one of the dialog buttons.

(For experts: if `setting` is `TRUE`, the entry calls `gtk_window_activate_default()` on the window containing the entry, in the default handler for the "activate" signal.)

`entry` : | a GtkEntry
`setting` : | `TRUE` to activate window's default widget on Enter keypress

### gtk_entry_set_has_frame ()

    void                gtk_entry_set_has_frame             (GtkEntry *entry,
                                                             gboolean setting);

Sets whether the entry has a beveled frame around it.

`entry` : | a GtkEntry
`setting` : | new value

### gtk_entry_set_inner_border ()

    void                gtk_entry_set_inner_border          (GtkEntry *entry,
                                                             const GtkBorder *border);

Sets `entry`'s inner-border property to `border`, or clears it if `NULL` is passed. The inner-border is the area around the entry's text, but inside its frame.

If set, this property overrides the inner-border style property. Overriding the style-provided border is useful when you want to do in-place editing of some text in a canvas or list widget, where pixel-exact positioning of the entry is important.

`entry` : | a GtkEntry
`border` : | a GtkBorder, or `NULL`

Since 2.10

### gtk_entry_set_width_chars ()

    void                gtk_entry_set_width_chars           (GtkEntry *entry,
                                                             gint n_chars);

Changes the size request of the entry to be about the right size for `n_chars` characters. Note that it changes the size request, the size can still be affected by how you pack the widget into containers. If `n_chars` is -1, the size reverts to the default entry size.

`entry` : | a GtkEntry
`n_chars` : | width in chars

### gtk_entry_get_invisible_char ()

    gunichar            gtk_entry_get_invisible_char        (GtkEntry *entry);

Retrieves the character displayed in place of the real characters for entries with visibility set to false. See `gtk_entry_set_invisible_char()`.

`entry` : | a GtkEntry
Returns : | the current invisible char, or 0, if the entry does not show invisible text at all.

### gtk_entry_set_alignment ()

    void                gtk_entry_set_alignment             (GtkEntry *entry,
                                                             gfloat xalign);

Sets the alignment for the contents of the entry. This controls the horizontal positioning of the contents when the displayed text is shorter than the width of the entry.

`entry` : | a GtkEntry
`xalign` : | The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL layouts

Since 2.4

### gtk_entry_get_alignment ()

    gfloat              gtk_entry_get_alignment             (GtkEntry *entry);

Gets the value set by `gtk_entry_set_alignment()`.

`entry` : | a GtkEntry
Returns : | the alignment

Since 2.4

### gtk_entry_get_layout ()

    PangoLayout*        gtk_entry_get_layout                (GtkEntry *entry);

Gets the PangoLayout used to display the entry. The layout is useful to e.g. convert text positions to pixel positions, in combination with `gtk_entry_get_layout_offsets()`. The returned layout is owned by the entry and must not be modified or freed by the caller.

Keep in mind that the layout text may contain a preedit string, so `gtk_entry_layout_index_to_text_index()` and `gtk_entry_text_index_to_layout_index()` are needed to convert byte indices in the layout to byte indices in the entry contents.

`entry` : | a GtkEntry
Returns : | the PangoLayout for this entry

### gtk_entry_get_layout_offsets ()

    void                gtk_entry_get_layout_offsets        (GtkEntry *entry,
                                                             gint *x,
                                                             gint *y);

Obtains the position of the PangoLayout used to render text in the entry, in widget coordinates. Useful if you want to line up the text in an entry with some other text, e.g. when using the entry to implement editable cells in a sheet widget.

Also useful to convert mouse events into coordinates inside the PangoLayout, e.g. to take some action if some part of the entry text is clicked.

Note that as the user scrolls around in the entry the offsets will change; you'll need to connect to the "notify::scroll-offset" signal to track this. Remember when using the PangoLayout functions you need to convert to and from pixels using `PANGO_PIXELS()` or PANGO_SCALE.

Keep in mind that the layout text may contain a preedit string, so `gtk_entry_layout_index_to_text_index()` and `gtk_entry_text_index_to_layout_index()` are needed to convert byte indices in the layout to byte indices in the entry contents.

`entry` : | a GtkEntry
`x` : | location to store X offset of layout, or `NULL`
`y` : | location to store Y offset of layout, or `NULL`

### gtk_entry_layout_index_to_text_index ()

    gint                gtk_entry_layout_index_to_text_index
                                                            (GtkEntry *entry,
                                                             gint layout_index);

Converts from a position in the entry contents (returned by `gtk_entry_get_text()`) to a position in the entry's PangoLayout (returned by `gtk_entry_get_layout()`, with text retrieved via `pango_layout_get_text()`).

`entry` : | a GtkEntry
`layout_index` : | byte index into the entry layout text
Returns : | byte index into the entry contents

### gtk_entry_text_index_to_layout_index ()

    gint                gtk_entry_text_index_to_layout_index
                                                            (GtkEntry *entry,
                                                             gint text_index);

Converts from a position in the entry's PangoLayout (returned by `gtk_entry_get_layout()`) to a position in the entry contents (returned by `gtk_entry_get_text()`).

`entry` : | a GtkEntry
`text_index` : | byte index into the entry contents
Returns : | byte index into the entry layout text

### gtk_entry_get_max_length ()

    gint                gtk_entry_get_max_length            (GtkEntry *entry);

Retrieves the maximum allowed length of the text in `entry`. See `gtk_entry_set_max_length()`.

`entry` : | a GtkEntry
Returns : | the maximum allowed number of characters in GtkEntry, or 0 if there is no maximum.

### gtk_entry_get_visibility ()

    gboolean            gtk_entry_get_visibility            (GtkEntry *entry);

Retrieves whether the text in `entry` is visible. See `gtk_entry_set_visibility()`.

`entry` : | a GtkEntry
Returns : | `TRUE` if the text is currently visible

### gtk_entry_set_completion ()

    void                gtk_entry_set_completion            (GtkEntry *entry,
                                                             GtkEntryCompletion *completion);

Sets `completion` to be the auxiliary completion object to use with `entry`. All further configuration of the completion mechanism is done on `completion` using the GtkEntryCompletion API. Completion is disabled if `completion` is set to `NULL`.

`entry` : | A GtkEntry
`completion` : | The GtkEntryCompletion or `NULL`

Since 2.4

### gtk_entry_get_completion ()

    GtkEntryCompletion* gtk_entry_get_completion            (GtkEntry *entry);

Returns the auxiliary completion object currently in use by `entry`.

`entry` : | A GtkEntry
Returns : | The auxiliary completion object currently in use by `entry`.

Since 2.4

### gtk_entry_set_cursor_hadjustment ()

    void                gtk_entry_set_cursor_hadjustment    (GtkEntry *entry,
                                                             GtkAdjustment *adjustment);

Hooks up an adjustment to the cursor position in an entry, so that when the cursor is moved, the adjustment is scrolled to show that position. See `gtk_scrolled_window_get_hadjustment()` for a typical way of obtaining the adjustment.

The adjustment has to be in pixel units and in the same coordinate system as the entry.

`entry` : | a GtkEntry
`adjustment` : | an adjustment which should be adjusted when the cursor is moved, or `NULL`

Since 2.12

### gtk_entry_get_cursor_hadjustment ()

    GtkAdjustment*      gtk_entry_get_cursor_hadjustment    (GtkEntry *entry);

Retrieves the horizontal cursor adjustment for the entry. See `gtk_entry_set_cursor_hadjustment()`.

`entry` : | a GtkEntry
Returns : | the horizontal cursor adjustment, or `NULL` if none has been set.

Since 2.12

## Property Details

### The `"activates-default"` property

      "activates-default"        gboolean              : Read / Write

Whether to activate the default widget (such as the default button in a dialog) when Enter is pressed.

Default value: FALSE

### The `"cursor-position"` property

      "cursor-position"          gint                  : Read

The current position of the insertion cursor in chars.

Allowed values: [0,65535]

Default value: 0

### The `"editable"` property

      "editable"                 gboolean              : Read / Write

Whether the entry contents can be edited.

Default value: TRUE

### The `"has-frame"` property

      "has-frame"                gboolean              : Read / Write

FALSE removes outside bevel from entry.

Default value: TRUE

### The `"inner-border"` property

      "inner-border"             GtkBorder*            : Read / Write

Sets the text area's border between the text and the frame.

Since 2.10

### The `"invisible-char"` property

      "invisible-char"           guint                 : Read / Write

The character to use when masking entry contents (in "password mode").

Default value: '*'

### The `"max-length"` property

      "max-length"               gint                  : Read / Write

Maximum number of characters for this entry. Zero if no maximum.

Allowed values: [0,65535]

Default value: 0

### The `"scroll-offset"` property

      "scroll-offset"            gint                  : Read

Number of pixels of the entry scrolled off the screen to the left.

Allowed values: >= 0

Default value: 0

### The `"selection-bound"` property

      "selection-bound"          gint                  : Read

The position of the opposite end of the selection from the cursor in chars.

Allowed values: [0,65535]

Default value: 0

### The `"shadow-type"` property

      "shadow-type"              GtkShadowType         : Read / Write

Which kind of shadow to draw around the entry when "has-frame" is set to `TRUE`.

Default value: GTK_SHADOW_IN

Since 2.12

### The `"text"` property

      "text"                     gchar*                : Read / Write

The contents of the entry.

Default value: ""

### The `"truncate-multiline"` property

      "truncate-multiline"       gboolean              : Read / Write

When `TRUE`, pasted multi-line text is truncated to the first line.

Default value: FALSE

Since 2.10

### The `"visibility"` property

      "visibility"               gboolean              : Read / Write

FALSE displays the "invisible char" instead of the actual text (password mode).

Default value: TRUE

### The `"width-chars"` property

      "width-chars"              gint                  : Read / Write

Number of characters to leave space for in the entry.

Allowed values: >= -1

Default value: -1

### The `"xalign"` property

      "xalign"                   gfloat                : Read / Write

The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL layouts.

Allowed values: [0,1]

Default value: 0

Since 2.4

## Style Property Details

### The `"inner-border"` style property

      "inner-border"             GtkBorder*            : Read

Sets the text area's border between the text and the frame.

Since 2.10

## Signal Details

### The `"activate"` signal

    void                user_function                      (GtkEntry *entry,
                                                            gpointer  user_data)      : Run Last / Action

`entry` : | the object which received the signal.
`user_data` : | user data set when the signal handler was connected.

### The `"backspace"` signal

    void                user_function                      (GtkEntry *entry,
                                                            gpointer  user_data)      : Run Last / Action

`entry` : | the object which received the signal.
`user_data` : | user data set when the signal handler was connected.

### The `"copy-clipboard"` signal

    void                user_function                      (GtkEntry *entry,
                                                            gpointer  user_data)      : Run Last / Action

`entry` : | the object which received the signal.
`user_data` : | user data set when the signal handler was connected.

### The `"cut-clipboard"` signal

    void                user_function                      (GtkEntry *entry,
                                                            gpointer  user_data)      : Run Last / Action

`entry` : | the object which received the signal.
`user_data` : | user data set when the signal handler was connected.

### The `"delete-from-cursor"` signal

    void                user_function                      (GtkEntry     *entry,
                                                            GtkDeleteType arg1,
                                                            gint          arg2,
                                                            gpointer      user_data)      : Run Last / Action

`entry` : | the object which received the signal.
`arg1` : |
`arg2` : |
`user_data` : | user data set when the signal handler was connected.

### The `"insert-at-cursor"` signal

    void                user_function                      (GtkEntry *entry,
                                                            gchar    *arg1,
                                                            gpointer  user_data)      : Run Last / Action

`entry` : | the object which received the signal.
`arg1` : |
`user_data` : | user data set when the signal handler was connected.

### The `"move-cursor"` signal

    void                user_function                      (GtkEntry       *entry,
                                                            GtkMovementStep arg1,
                                                            gint            arg2,
                                                            gboolean        arg3,
                                                            gpointer        user_data)      : Run Last / Action

`entry` : | the object which received the signal.
`arg1` : |
`arg2` : |
`arg3` : |
`user_data` : | user data set when the signal handler was connected.

### The `"paste-clipboard"` signal

    void                user_function                      (GtkEntry *entry,
                                                            gpointer  user_data)      : Run Last / Action

`entry` : | the object which received the signal.
`user_data` : | user data set when the signal handler was connected.

### The `"populate-popup"` signal

    void                user_function                      (GtkEntry *entry,
                                                            GtkMenu  *arg1,
                                                            gpointer  user_data)      : Run Last

`entry` : | the object which received the signal.
`arg1` : |
`user_data` : | user data set when the signal handler was connected.

### The `"toggle-overwrite"` signal

    void                user_function                      (GtkEntry *entry,
                                                            gpointer  user_data)      : Run Last / Action

`entry` : | the object which received the signal.
`user_data` : | user data set when the signal handler was connected.

## See Also

GtkTextView | a widget for handling multi-line text entry.