diff -r dee2ca687a14 -r 0db713dc8590 ui/qt/text.cpp --- a/ui/qt/text.cpp Fri Jan 16 11:56:17 2026 +0100 +++ b/ui/qt/text.cpp Wed Jan 21 20:12:59 2026 +0100 @@ -278,3 +278,50 @@ } str->value.ptr = NULL; } + +void ui_textfield_focus(UIWIDGET textfield) { + QLineEdit *edit = static_cast(textfield); + edit->setFocus(); + edit->selectAll(); +} + +void ui_textfield_focus_without_selecting(UIWIDGET textfield) { + QLineEdit *edit = static_cast(textfield); + edit->setFocus(); +} + +void ui_textfield_set_selection(UIWIDGET textfield, int begin, int end) { + QLineEdit *edit = static_cast(textfield); + if (begin < 0) { + begin = 0; + } + if (end < begin) { + end = begin; + } + edit->setSelection(begin, end - begin); +} + +void ui_textfield_select_all(UIWIDGET textfield) { + QLineEdit *edit = static_cast(textfield); + edit->selectAll(); +} + +void ui_textfield_set_editable(UIWIDGET textfield, UiBool editable) { + QLineEdit *edit = static_cast(textfield); + edit->setReadOnly(!editable); +} + +UiBool ui_textfield_is_editable(UIWIDGET textfield) { + QLineEdit *edit = static_cast(textfield); + return !edit->isReadOnly(); +} + +void ui_textfield_set_position(UIWIDGET textfield, int pos) { + QLineEdit *edit = static_cast(textfield); + edit->setCursorPosition(pos); +} + +int ui_textfield_get_position(UIWIDGET textfield) { + QLineEdit *edit = static_cast(textfield); + return edit->cursorPosition(); +}