Text
Object Hierarchy:
Description:
public class Text : Widget, Accessible, AccessibleText, Buildable, ConstraintTarget, Editable
A single-line text entry.
`GtkText` is the common implementation of single-line text editing that is shared between [class@Gtk.Entry], [class@Gtk.PasswordEntry], [ class@Gtk.SpinButton], and other widgets. In all of these, a `GtkText` instance is used as the delegate for the [iface@Gtk.Editable] implementation.
A large number of key bindings s 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.
When using an entry for passwords and other sensitive information, it can be put into “password mode” using [method@Gtk.Text.set_visibility ]. In this mode, entered text is displayed using an “invisible” character. By default, GTK picks the best invisible character that is available in the current font, but it can be changed with [method@Gtk.Text.set_invisible_char].
If you want to add icons or progress display in an entry, look at [class@Gtk.Entry]. There are other alternatives for more specialized use cases, such as [class@Gtk.SearchEntry].
If you need multi-line editable text, use [class@Gtk.TextView].
Shortcuts and Gestures
`GtkText` supports the following keyboard shortcuts:
- <kbd>Shift</kbd>+<kbd>F10</kbd> or <kbd>Menu</kbd> opens the context menu.
- <kbd>Ctrl</kbd>+<kbd>A</kbd> or <kbd>Ctrl</kbd>+<kbd>/</kbd> selects all the text.
- <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>A</kbd> or <kbd>Ctrl</kbd>+<kbd>\< /kbd> unselects all.
- <kbd>Ctrl</kbd>+<kbd>Z</kbd> undoes the last modification.
- <kbd>Ctrl</kbd>+<kbd>Y</kbd> or <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Z</kbd> redoes the last undone modification.
- <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>T</kbd> toggles the text direction.
- <kbd>Clear</kbd> clears the content.
Additionally, the following signals have default keybindings:
- [signal@Gtk.Text:
GtkText:activate
] - [signal@Gtk.Text:
GtkText:backspace
] - [signal@Gtk.Text:
GtkText:copy-clipboard
] - [signal@Gtk.Text:
GtkText:cut-clipboard
] - [signal@Gtk.Text:
GtkText:delete-from-cursor
] - [signal@Gtk.Text:
GtkText:insert-emoji
] - [signal@Gtk.Text:
GtkText:move-cursor
] - [signal@Gtk.Text:
GtkText:paste-clipboard
] - [signal@Gtk.Text:
GtkText:toggle-overwrite
]
Actions
`GtkText` defines a set of built-in actions:
- `clipboard.copy` copies the contents to the clipboard.
- `clipboard.cut` copies the contents to the clipboard and deletes it from the widget.
- `clipboard.paste` inserts the contents of the clipboard into the widget.
- `menu.popup` opens the context menu.
- `misc.insert-emoji` opens the Emoji chooser.
- `misc.toggle-visibility` toggles the `GtkText`visibility property.
- `misc.toggle-direction` toggles the text direction.
- `selection.delete` deletes the current selection.
- `selection.select-all` selects all of the widgets content.
- `text.redo` redoes the last change to the contents.
- `text.undo` undoes the last change to the contents.
- `text.clear` removes all content.
CSS nodes
``` text[.read-only] ├── placeholder ├── undershoot.left ├── undershoot.right ├── [selection] ├── [cursor-handle[ .top] ├── [cursor-handle.bottom] ├── [block-cursor] ├── [cursor-handle.top/.bottom] ╰── [window.popup] ```
`GtkText` has a main node with the name `text`. Depending on the properties of the widget, the `.read-only` style class may appear.
When the entry has a selection, it adds a subnode with the name `selection`.
When the entry is in overwrite mode, it adds a subnode with the name `block-cursor` that determines how the block cursor is drawn.
The CSS node for a context menu is added as a subnode with the name `popup`.
The `undershoot` nodes are used to draw the underflow indication when content is scrolled out of view. These nodes get the `.left` or `.right` style class added depending on where the indication is drawn.
When touch is used and touch selection handles are shown, they are using CSS nodes with name `cursor-handle`. They get the `.top` or `.bottom` style class depending on where they are shown in relation to the selection. If there is just a single handle for the text cursor, it gets the style class `.insertion-cursor`.
Accessibility
`GtkText` uses the [enum@Gtk.AccessibleRole.none] role, which causes it to be skipped for accessibility. This is because `GtkText` is expected to be used as a delegate for a `GtkEditable` implementation that will be represented to accessibility.