# HG changeset patch # User Olaf Wintermann # Date 1409246721 -7200 # Node ID ddfd6b90cc54e6978546cbe821549e6d486b0317 # Parent 87e3a5dc66dd8c1f81743bbb3ad781b952035085 updated UiText implementation (Qt) diff -r 87e3a5dc66dd -r ddfd6b90cc54 ui/qt/text.cpp --- a/ui/qt/text.cpp Thu Aug 28 16:34:09 2014 +0200 +++ b/ui/qt/text.cpp Thu Aug 28 19:25:21 2014 +0200 @@ -33,13 +33,11 @@ #include "../common/document.h" UIWIDGET ui_textarea(UiObject *obj, UiText *value) { - UiContainer *ct = uic_get_current_container(obj); - QTextEdit *textedit = new QTextEdit(); - ct->add((textedit)); + QTextDocument *txtdoc = value && value->obj ? (QTextDocument*)value->obj : new QTextDocument(); if(value) { - if(value->value) { - // TODO: set text and free old value + if(value->value && value->obj) { + ui_textarea_set(value, value->value); } value->get = ui_textarea_get; @@ -50,10 +48,15 @@ value->selection = ui_textarea_selection; value->length = ui_textarea_length; value->remove = ui_textarea_remove; - value->obj = textedit->document(); + value->obj = txtdoc; value->value = NULL; } + UiContainer *ct = uic_get_current_container(obj); + QTextEdit *textedit = new QTextEdit(); + textedit->setDocument(txtdoc); + ct->add((textedit)); + return textedit; } @@ -83,14 +86,15 @@ } void ui_textarea_set(UiText *text, char *str) { + // set text + QTextDocument *doc = (QTextDocument*)text->obj; + QString qstr = QString::fromUtf8(str); + doc->setPlainText(qstr); + // cleanup if(text->value) { free(text->value); } text->value = NULL; - - QTextDocument *doc = (QTextDocument*)text->obj; - QString qstr = QString::fromUtf8(str); - doc->setPlainText(qstr); } char* ui_textarea_getsubstr(UiText *text, int begin, int end) {