ui/gtk/text.c

changeset 487
077c5029aaee
parent 486
a5f3abf8b9d1
--- a/ui/gtk/text.c	Wed Mar 05 22:09:22 2025 +0100
+++ b/ui/gtk/text.c	Wed Mar 05 22:28:01 2025 +0100
@@ -162,6 +162,7 @@
             }
         }
         gtk_text_view_set_buffer(GTK_TEXT_VIEW(text_area), buf);
+        value->obj = text_area;
         value->save = ui_textarea_save;
         value->restore = ui_textarea_restore;
         value->destroy = ui_textarea_text_destroy;
@@ -205,6 +206,10 @@
 
 void ui_textarea_restore(UiText *text) {
     GtkWidget *textarea = text->obj;
+    if(!text->data1) {
+        text->data1 = gtk_text_buffer_new(NULL);
+        text->datatype = UI_TEXT_TYPE_BUFFER;
+    }
     gtk_text_view_set_buffer(GTK_TEXT_VIEW(textarea), text->data1);
 }
 
@@ -217,7 +222,7 @@
     if(text->value.ptr) {
         text->value.free(text->value.ptr);
     }
-    GtkTextBuffer *buf = text->obj;
+    GtkTextBuffer *buf = text->data1;
     GtkTextIter start;
     GtkTextIter end;
     gtk_text_buffer_get_bounds(buf, &start, &end);
@@ -228,7 +233,7 @@
 }
 
 void ui_textarea_set(UiText *text, const char *str) {
-    gtk_text_buffer_set_text((GtkTextBuffer*)text->obj, str, -1);
+    gtk_text_buffer_set_text((GtkTextBuffer*)text->data1, str, -1);
     if(text->value.ptr) {
         text->value.free(text->value.ptr);
     }
@@ -240,11 +245,11 @@
     if(text->value.ptr) {
         text->value.free(text->value.ptr);
     }
-    GtkTextBuffer *buf = text->obj;
+    GtkTextBuffer *buf = text->data1;
     GtkTextIter ib;
     GtkTextIter ie;
-    gtk_text_buffer_get_iter_at_offset(text->obj, &ib, begin);
-    gtk_text_buffer_get_iter_at_offset(text->obj, &ie, end);
+    gtk_text_buffer_get_iter_at_offset(text->data1, &ib, begin);
+    gtk_text_buffer_get_iter_at_offset(text->data1, &ie, end);
     char *str = gtk_text_buffer_get_text(buf, &ib, &ie, FALSE);
     text->value.ptr = g_strdup(str);
     text->value.free = (ui_freefunc)g_free;
@@ -253,8 +258,8 @@
 
 void ui_textarea_insert(UiText *text, int pos, char *str) {
     GtkTextIter offset;
-    gtk_text_buffer_get_iter_at_offset(text->obj, &offset, pos);
-    gtk_text_buffer_insert(text->obj, &offset, str, -1);
+    gtk_text_buffer_get_iter_at_offset(text->data1, &offset, pos);
+    gtk_text_buffer_insert(text->data1, &offset, str, -1);
     if(text->value.ptr) {
         text->value.free(text->value.ptr);
     }
@@ -264,14 +269,14 @@
 
 void ui_textarea_setposition(UiText *text, int pos) {
     GtkTextIter iter;
-    gtk_text_buffer_get_iter_at_offset(text->obj, &iter, pos);
-    gtk_text_buffer_place_cursor(text->obj, &iter);
+    gtk_text_buffer_get_iter_at_offset(text->data1, &iter, pos);
+    gtk_text_buffer_place_cursor(text->data1, &iter);
 }
 
 int ui_textarea_position(UiText *text) {
     GtkTextIter begin;
     GtkTextIter end;
-    gtk_text_buffer_get_selection_bounds(text->obj, &begin, &end);
+    gtk_text_buffer_get_selection_bounds(text->data1, &begin, &end);
     text->pos = gtk_text_iter_get_offset(&begin);
     return text->pos;
 }
@@ -279,13 +284,13 @@
 void ui_textarea_selection(UiText *text, int *begin, int *end) {
     GtkTextIter b;
     GtkTextIter e;
-    gtk_text_buffer_get_selection_bounds(text->obj, &b, &e);
+    gtk_text_buffer_get_selection_bounds(text->data1, &b, &e);
     *begin = gtk_text_iter_get_offset(&b);
     *end = gtk_text_iter_get_offset(&e);
 }
 
 int ui_textarea_length(UiText *text) {
-    GtkTextBuffer *buf = text->obj;
+    GtkTextBuffer *buf = text->data1;
     GtkTextIter start;
     GtkTextIter end;
     gtk_text_buffer_get_bounds(buf, &start, &end);
@@ -293,7 +298,7 @@
 }
 
 void ui_textarea_remove(UiText *text, int begin, int end) {
-    GtkTextBuffer *buf = text->obj;
+    GtkTextBuffer *buf = text->data1;
     GtkTextIter ib;
     GtkTextIter ie;
     gtk_text_buffer_get_iter_at_offset(buf, &ib, begin);

mercurial