ui/gtk/text.c

changeset 1198
5bb4366b0c32
parent 1186
b114038a48da
--- 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);
 }

mercurial