--- 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);