From: Olaf Wintermann Date: Fri, 20 Feb 2026 17:08:24 +0000 (+0100) Subject: fix bullet list reorder X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;ds=sidebyside;p=note.git fix bullet list reorder --- diff --git a/application/gtk-text.c b/application/gtk-text.c index 1ba99f1..6b5dc9a 100644 --- a/application/gtk-text.c +++ b/application/gtk-text.c @@ -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); } }