--- a/ui/gtk/text.c Sun Jan 11 10:42:29 2026 +0100 +++ b/ui/gtk/text.c Sun Jan 11 14:59:15 2026 +0100 @@ -687,6 +687,41 @@ return create_textfield(obj, FALSE, TRUE, args); } +void ui_textfield_focus(UIWIDGET textfield) { + gtk_widget_grab_focus(textfield); +} + +void ui_textfield_focus_without_selecting(UIWIDGET textfield) { +#if GTK_CHECK_VERSION(3, 16, 0) + gtk_entry_grab_focus_without_selecting(GTK_ENTRY(textfield)); +#else + gtk_widget_grab_focus(textfield); +#endif +} + +void ui_textfield_set_selection(UIWIDGET textfield, int begin, int length) { + ENTRY_SET_SELECTION(textfield, begin, begin+length); +} + +void ui_textfield_select_all(UIWIDGET textfield) { + ENTRY_SET_SELECTION(textfield, 0, -1); +} + +void ui_textfield_set_editable(UIWIDGET textfield, UiBool editable) { + ENTRY_SET_EDITABLE(textfield, editable); +} + +UiBool ui_textfield_is_editable(UIWIDGET textfield) { + ENTRY_IS_EDITABLE(textfield); +} + +void ui_textfield_set_position(UIWIDGET textfield, int pos) { + ENTRY_SET_POSITION(textfield, pos); +} + +int ui_textfield_get_position(UIWIDGET textfield) { + return ENTRY_GET_POSITION(textfield); +} void ui_textfield_destroy(GtkWidget *object, UiTextField *textfield) { free(textfield);