]> uap-core.de Git - note.git/commitdiff
fix editor_get_markdown does not get text from the last section sometimes
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sat, 29 Mar 2025 08:34:50 +0000 (09:34 +0100)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sat, 29 Mar 2025 08:34:50 +0000 (09:34 +0100)
application/gtk-text.c

index 41156e99806b51308790164a0b45a2f4cfedca06..dfd65b052cbf81530dc25a038e872b1c123d1ae6 100644 (file)
@@ -728,11 +728,19 @@ cxmutstr editor_get_markdown(UiText *text, const CxAllocator *a) {
     
     GtkTextChildAnchor *anchor = NULL;
     
+    GtkTextIter end_iter;
+    gtk_text_buffer_get_iter_at_offset(buffer, &end_iter, -1);
+    int end_offset = gtk_text_iter_get_offset(&end_iter);
+    
     GtkTextIter start;
     GtkTextIter iter;
     gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0);
     start = iter;
-    while(gtk_text_iter_forward_to_tag_toggle(&iter, NULL)) {
+    while(gtk_text_iter_get_offset(&iter) < end_offset) {
+        if(!gtk_text_iter_forward_to_tag_toggle(&iter, NULL)) {
+            iter = end_iter;
+        }
+        
         if(anchor) {
             EmbeddedWidget *em = g_object_get_data(G_OBJECT(anchor), "em");
             if(em) {
@@ -752,6 +760,7 @@ cxmutstr editor_get_markdown(UiText *text, const CxAllocator *a) {
             }
         }
         if(!anchor) {
+            // we have not checked the anchor at iter
             anchor = gtk_text_iter_get_child_anchor(&iter);
         }