diff -r 4bbf0487509f -r 5bb4366b0c32 ui/gtk/text.c --- a/ui/gtk/text.c Sun Jun 14 10:52:28 2026 +0200 +++ b/ui/gtk/text.c Sun Jun 14 11:07:38 2026 +0200 @@ -192,6 +192,11 @@ value->value.free(value->value.ptr); } } + + if(value->readonly) { + gtk_text_view_set_editable(GTK_TEXT_VIEW(text_area), FALSE); + } + gtk_text_view_set_buffer(GTK_TEXT_VIEW(text_area), buf); value->obj = text_area; value->save = ui_textarea_save; @@ -209,6 +214,7 @@ value->selection = ui_textarea_selection; value->length = ui_textarea_length; value->remove = ui_textarea_remove; + value->setreadonly = ui_textarea_setreadonly; value->data1 = buf; value->data2 = NULL; value->datatype == UI_TEXT_TYPE_BUFFER; @@ -341,6 +347,7 @@ text->datatype = UI_TEXT_TYPE_BUFFER; } gtk_text_view_set_buffer(GTK_TEXT_VIEW(textarea), text->data1); + gtk_text_view_set_editable(GTK_TEXT_VIEW(textarea), !text->readonly); } void ui_textarea_text_destroy(UiText *text) { @@ -465,6 +472,13 @@ gtk_text_buffer_delete(buf, &ib, &ie); } +void ui_textarea_setreadonly(UiText *text, int readonly) { + if(text->obj) { + gtk_text_view_set_editable(GTK_TEXT_VIEW(text->obj), !readonly); + } + text->readonly = readonly; +} + void ui_textarea_realize_event(GtkWidget *widget, gpointer data) { gtk_widget_grab_focus(widget); }