--- a/ui/qt/text.cpp Sat Apr 05 17:57:04 2025 +0200 +++ b/ui/qt/text.cpp Sun Jul 20 22:04:39 2025 +0200 @@ -57,16 +57,16 @@ return document; } -UIWIDGET ui_textarea_create(UiObject *obj, UiTextAreaArgs args) { +UIWIDGET ui_textarea_create(UiObject *obj, UiTextAreaArgs *args) { UiContainerPrivate *ctn = ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); QTextEdit *textarea = new QTextEdit(); - ctn->add(textarea, true); + ctn->add(textarea); QTextDocument *document = nullptr; - UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_STRING); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_STRING); if(var) { UiText *value = (UiText*)var->value; @@ -201,23 +201,27 @@ } void ui_textarea_remove(UiText *text, int begin, int end) { - // TODO + QTextDocument *doc = (QTextDocument*)text->data1; + QTextCursor cursor(doc); + cursor.setPosition(begin); + cursor.setPosition(end, QTextCursor::KeepAnchor); + cursor.removeSelectedText(); } /* ------------------------------ TextField ------------------------------ */ -static UIWIDGET create_textfield(UiObject *obj, UiTextFieldArgs args, bool password, bool frameless) { +static UIWIDGET create_textfield(UiObject *obj, UiTextFieldArgs *args, bool password, bool frameless) { UiContainerPrivate *ctn = ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); QLineEdit *textfield = new QLineEdit(); - ctn->add(textfield, false); + ctn->add(textfield); if(password) { textfield->setEchoMode(QLineEdit::Password); } - UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_STRING); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_STRING); if(var) { UiString *value = (UiString*)var->value; if(value->value.ptr) { @@ -237,15 +241,15 @@ return textfield; } -UIWIDGET ui_textfield_create(UiObject *obj, UiTextFieldArgs args) { +UIWIDGET ui_textfield_create(UiObject *obj, UiTextFieldArgs *args) { return create_textfield(obj, args, false, false); } -UIWIDGET ui_frameless_textfield_create(UiObject* obj, UiTextFieldArgs args) { +UIWIDGET ui_frameless_textfield_create(UiObject* obj, UiTextFieldArgs *args) { return create_textfield(obj, args, false, true); } -UIWIDGET ui_passwordfield_create(UiObject* obj, UiTextFieldArgs args) { +UIWIDGET ui_passwordfield_create(UiObject* obj, UiTextFieldArgs *args) { return create_textfield(obj, args, true, false); }