]> uap-core.de Git - note.git/commitdiff
fix bullet list reorder main
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 20 Feb 2026 17:08:24 +0000 (18:08 +0100)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 20 Feb 2026 17:08:24 +0000 (18:08 +0100)
application/gtk-text.c

index 1ba99f1411d5b6ed0e8597667318511eafaa9757..6b5dc9a7ea5efc745dd73a7f69917df0ad9527f7 100644 (file)
@@ -339,17 +339,20 @@ static int iter_is_list(GtkTextBuffer *buffer, const GtkTextIter *iter, int *dep
     return 0;
 }
 
-static void reorder_list(GtkTextBuffer *buffer, const GtkTextIter *begin) {
+static void reorder_list(GtkTextBuffer *buffer, const GtkTextIter *begin, int ignore_begin, int ignore_end) {
     GtkTextIter i = *begin;
     
     GtkTextChildAnchor *anchor = NULL;
     GtkTextChildAnchor *prevAnchor = NULL;
     int line_is_list = 0;
-    int num = 1;
+    int num = 0;
     
-    while(gtk_text_iter_forward_char(&i)) {
+    do {
+        int offset = gtk_text_iter_get_offset(&i);
+        printf("reorder %d\n", offset);
         if(gtk_text_iter_get_char(&i) == '\n') {
             if(!line_is_list) {
+                printf("reorder break\n");
                 break;
             }
             line_is_list = 0;
@@ -360,14 +363,15 @@ static void reorder_list(GtkTextBuffer *buffer, const GtkTextIter *begin) {
             EmbeddedWidget *em = g_object_get_data(G_OBJECT(anchor), "em");
             if(em && em->type == EMBEDDED_WIDGET_LIST) {
                 line_is_list = 1;
-                if(em->intdata1 == 0) {
+                if(em->intdata1 == 0 && !(offset >= ignore_begin && offset <= ignore_end)) {
+                    printf("reorder num %d\n", num);
                     em->intdata2 = num++;
                     ui_widget_redraw(em->widget);
                 }
             }
         }
         prevAnchor = anchor;
-    }
+    } while(gtk_text_iter_forward_char(&i));
 }
 
 static int get_list_begin(GtkTextBuffer *buffer, const GtkTextIter *iter, GtkTextIter *begin) {
@@ -490,7 +494,7 @@ static void edit_insert_text_cb(
         GtkTextIter list_begin;
         int islist = get_list_begin(buffer, &begin, &list_begin);
         if(islist) {
-            reorder_list(buffer, &list_begin);
+            //reorder_list(buffer, &list_begin);
         }
     }
 }
@@ -504,7 +508,9 @@ static void editor_delete_range_cb(
     GtkTextIter list_begin;
     int islist = get_list_begin(buffer, start, &list_begin);
     if(islist) {
-        reorder_list(buffer, &list_begin);
+        int begin_offset = gtk_text_iter_get_offset(start);
+        int end_offset = gtk_text_iter_get_offset(end);
+        reorder_list(buffer, &list_begin, begin_offset, end_offset);
     }
 }