ui/gtk/text.c

changeset 1142
e2a6707aa1e0
parent 1114
388285e877fe
child 1149
76b7664f951e
--- a/ui/gtk/text.c	Sun May 24 20:44:08 2026 +0200
+++ b/ui/gtk/text.c	Tue May 26 21:05:47 2026 +0200
@@ -406,7 +406,9 @@
 }
 
 void ui_textarea_showposition(UiText *text, int pos) {
-    ui_textarea_scroll_to(text->obj, pos);
+    if(text->obj) {
+        ui_textarea_scroll_to(text->obj, pos);
+    }
 }
 
 void ui_textarea_setselection(UiText *text, int begin, int end) {
@@ -564,6 +566,7 @@
     if(!value->data2) {
         value->data2 = ui_create_undomgr();
     }
+    GtkTextBuffer *buf = value->data1;
     UiUndoMgr *mgr = value->data2;
     if(!mgr->event) {
         return;
@@ -583,7 +586,7 @@
         }
     }
     
-    char *text = gtk_text_buffer_get_text(value->obj, start, end, FALSE);
+    char *text = gtk_text_buffer_get_text(buf, start, end, FALSE);
     
     UiTextBufOp *op = malloc(sizeof(UiTextBufOp));
     op->prev = NULL;
@@ -659,6 +662,7 @@
 }
 
 void ui_text_undo(UiText *value) {
+    GtkTextBuffer *buf = value->data1;
     UiUndoMgr *mgr = value->data2;
     
     if(mgr->cur) {
@@ -668,17 +672,17 @@
             case UI_TEXTBUF_INSERT: {
                 GtkTextIter begin;
                 GtkTextIter end;
-                gtk_text_buffer_get_iter_at_offset(value->obj, &begin, op->start);
-                gtk_text_buffer_get_iter_at_offset(value->obj, &end, op->end);
-                gtk_text_buffer_delete(value->obj, &begin, &end);
+                gtk_text_buffer_get_iter_at_offset(buf, &begin, op->start);
+                gtk_text_buffer_get_iter_at_offset(buf, &end, op->end);
+                gtk_text_buffer_delete(buf, &begin, &end);
                 break;
             }
             case UI_TEXTBUF_DELETE: {
                 GtkTextIter begin;
                 GtkTextIter end;
-                gtk_text_buffer_get_iter_at_offset(value->obj, &begin, op->start);
-                gtk_text_buffer_get_iter_at_offset(value->obj, &end, op->end);
-                gtk_text_buffer_insert(value->obj, &begin, op->text, op->len);
+                gtk_text_buffer_get_iter_at_offset(buf, &begin, op->start);
+                gtk_text_buffer_get_iter_at_offset(buf, &end, op->end);
+                gtk_text_buffer_insert(buf, &begin, op->text, op->len);
                 break;
             }
         }
@@ -688,6 +692,7 @@
 }
 
 void ui_text_redo(UiText *value) {
+    GtkTextBuffer *buf = value->data1;
     UiUndoMgr *mgr = value->data2;
     
     UiTextBufOp *elm = NULL;
@@ -706,17 +711,17 @@
             case UI_TEXTBUF_INSERT: {
                 GtkTextIter begin;
                 GtkTextIter end;
-                gtk_text_buffer_get_iter_at_offset(value->obj, &begin, op->start);
-                gtk_text_buffer_get_iter_at_offset(value->obj, &end, op->end);
-                gtk_text_buffer_insert(value->obj, &begin, op->text, op->len);
+                gtk_text_buffer_get_iter_at_offset(buf, &begin, op->start);
+                gtk_text_buffer_get_iter_at_offset(buf, &end, op->end);
+                gtk_text_buffer_insert(buf, &begin, op->text, op->len);
                 break;
             }
             case UI_TEXTBUF_DELETE: {
                 GtkTextIter begin;
                 GtkTextIter end;
-                gtk_text_buffer_get_iter_at_offset(value->obj, &begin, op->start);
-                gtk_text_buffer_get_iter_at_offset(value->obj, &end, op->end);
-                gtk_text_buffer_delete(value->obj, &begin, &end);
+                gtk_text_buffer_get_iter_at_offset(buf, &begin, op->start);
+                gtk_text_buffer_get_iter_at_offset(buf, &end, op->end);
+                gtk_text_buffer_delete(buf, &begin, &end);
                 break;
             }
         }

mercurial