--- a/ui/motif/text.c Sun Jan 11 14:59:15 2026 +0100 +++ b/ui/motif/text.c Sun Jan 11 15:10:20 2026 +0100 @@ -492,6 +492,39 @@ return create_textfield(obj, args, FALSE, FALSE); } +void ui_textfield_focus(UIWIDGET textfield) { + ui_textfield_focus_without_selecting(textfield); + ui_textfield_select_all(textfield); +} + +void ui_textfield_focus_without_selecting(UIWIDGET textfield) { + XmProcessTraversal(textfield, XmTRAVERSE_CURRENT); +} + +void ui_textfield_set_selection(UIWIDGET textfield, int begin, int end) { + XmTextSetSelection(textfield, begin, end, 0); +} + +void ui_textfield_select_all(UIWIDGET textfield) { + XmTextSetSelection(textfield, 0, XmTextGetLastPosition(textfield), 0); +} + +void ui_textfield_set_editable(UIWIDGET textfield, UiBool editable) { + XmTextFieldSetEditable(textfield, editable); +} + +UiBool ui_textfield_is_editable(UIWIDGET textfield) { + return XmTextFieldGetEditable(textfield); +} + +void ui_textfield_set_position(UIWIDGET textfield, int pos) { + XmTextFieldSetInsertionPosition(textfield, pos); +} + +int ui_textfield_get_position(UIWIDGET textfield) { + return (int)XmTextFieldGetInsertionPosition(textfield); +} + char* ui_textfield_get(UiString *str) { if(str->value.free) { str->value.free(str->value.ptr);