Package org.gnome.gtk

Class Text

java.lang.Object
All Implemented Interfaces:
Proxy, Accessible, AccessibleText, Buildable, ConstraintTarget, Editable

@Generated("io.github.jwharm.JavaGI") public class Text extends Widget implements Accessible, AccessibleText, Buildable, ConstraintTarget, Editable
The GtkText widget is a single-line text entry widget.

GtkText is the common implementation of single-line text editing that is shared between Entry, PasswordEntry, SpinButton, and other widgets. In all of these, GtkText is used as the delegate for the Editable implementation.

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.

When using an entry for passwords and other sensitive information, it can be put into “password mode” using setVisibility(boolean). In this mode, entered text is displayed using a “invisible” character. By default, GTK picks the best invisible character that is available in the current font, but it can be changed with setInvisibleChar(int).

If you are looking to add icons or progress display in an entry, look at Entry. There other alternatives for more specialized use cases, such as SearchEntry.

If you need multi-line editable text, look at TextView.

Shortcuts and Gestures
GtkText supports the following keyboard shortcuts:

  • Shift+F10 or Menu opens the context menu.
  • Ctrl+A or Ctrl+/ selects all the text.
  • Ctrl+Shift+A or Ctrl+\ unselects all.
  • Ctrl+Z undoes the last modification.
  • Ctrl+Y or Ctrl+Shift+Z redoes the last undone modification.

Additionally, the following signals have default keybindings:

  • Gtk.Text::activate
  • Gtk.Text::backspace
  • Gtk.Text::copy-clipboard
  • Gtk.Text::cut-clipboard
  • Gtk.Text::delete-from-cursor
  • Gtk.Text::insert-emoji
  • Gtk.Text::move-cursor
  • Gtk.Text::paste-clipboard
  • Gtk.Text::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.
  • 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.

CSS nodes


 text[.read-only]
 ├── placeholder
 ├── undershoot.left
 ├── undershoot.right
 ├── [selection]
 ├── [block-cursor]
 ╰── [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 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.