implement textarea widget functions (QT)

Sat, 02 May 2026 18:07:12 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 02 May 2026 18:07:12 +0200
changeset 1120
b9a0387038b7
parent 1119
13983d8280ae
child 1121
f612b342f262

implement textarea widget functions (QT)

ui/qt/text.cpp file | annotate | diff | comparison | revisions
--- a/ui/qt/text.cpp	Fri May 01 20:51:17 2026 +0200
+++ b/ui/qt/text.cpp	Sat May 02 18:07:12 2026 +0200
@@ -96,6 +96,10 @@
     return textarea;
 }
 
+UIWIDGET ui_textarea_gettextwidget(UIWIDGET textarea) {
+    return textarea;
+}
+
 void ui_textarea_save(UiText *text) {
     // NOOP
 }
@@ -189,10 +193,7 @@
 
 void ui_textarea_setselection(UiText *text, int begin, int end) {
     QTextEdit *textview = (QTextEdit*)text->obj;
-    QTextCursor cursor = textview->textCursor();
-    cursor.setPosition(begin, QTextCursor::MoveAnchor);
-    cursor.setPosition(end, QTextCursor::KeepAnchor);
-    textview->setTextCursor(cursor); 
+    ui_textarea_set_selection(textview, begin, end);
 }
 
 int ui_textarea_length(UiText *text) {
@@ -208,6 +209,56 @@
     cursor.removeSelectedText();
 }
 
+
+void ui_textarea_focus(UIWIDGET textarea) {
+    QTextEdit *edit = static_cast<QTextEdit*>(textarea);
+    edit->setFocus();
+}
+
+void ui_textarea_set_selection(UIWIDGET textarea, int begin, int end) {
+    QTextEdit *edit = static_cast<QTextEdit*>(textarea);
+    QTextCursor cursor = edit->textCursor();
+    cursor.setPosition(begin, QTextCursor::MoveAnchor);
+    cursor.setPosition(end, QTextCursor::KeepAnchor);
+    edit->setTextCursor(cursor); 
+}
+
+void ui_textarea_select_all(UIWIDGET textarea) {
+    QTextEdit *edit = static_cast<QTextEdit*>(textarea);
+    edit->selectAll();
+}
+
+void ui_textarea_set_editable(UIWIDGET textarea, UiBool editable) {
+    QTextEdit *edit = static_cast<QTextEdit*>(textarea);
+    edit->setReadOnly(!editable);
+}
+
+UiBool ui_textarea_is_editable(UIWIDGET textarea) {
+    QTextEdit *edit = static_cast<QTextEdit*>(textarea);
+    return !edit->isReadOnly();
+}
+
+void ui_textarea_set_position(UIWIDGET textarea, int pos) {
+    QTextEdit *edit = static_cast<QTextEdit*>(textarea);
+    QTextCursor cursor = edit->textCursor();
+    cursor.setPosition(pos);
+    edit->setTextCursor(cursor); 
+}
+
+int ui_textarea_get_position(UIWIDGET textarea) {
+    QTextEdit *edit = static_cast<QTextEdit*>(textarea);
+    QTextCursor cursor = edit->textCursor();
+    return cursor.position();
+}
+
+void ui_textarea_scroll_to(UIWIDGET textarea, int pos) {
+    QTextEdit *edit = static_cast<QTextEdit*>(textarea);
+    QTextCursor cursor = edit->textCursor();
+    cursor.setPosition(pos);
+    edit->setTextCursor(cursor);
+    edit->ensureCursorVisible();
+}
+
 /* ------------------------------ TextField ------------------------------ */
 
 static UIWIDGET create_textfield(UiObject *obj, UiTextFieldArgs *args, bool password, bool frameless) {

mercurial