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;
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) {
GtkTextIter list_begin;
int islist = get_list_begin(buffer, &begin, &list_begin);
if(islist) {
- reorder_list(buffer, &list_begin);
+ //reorder_list(buffer, &list_begin);
}
}
}
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);
}
}