# HG changeset patch # User Sadrul Habib Chowdhury # Date 1168487804 0 # Node ID e9963b2cfcaf6aa47648cf5ac9199a07c56368f2 # Parent 82a2e909e10efd5cf6e271bde212e0a038ca1e96 [gaim-migrate @ 18101] Change some of the stuff here. This may or may not fix the bug regarding incoming typing notifications. committer: Tailor Script diff -r 82a2e909e10e -r e9963b2cfcaf console/libgnt/gnttextview.c --- a/console/libgnt/gnttextview.c Wed Jan 10 22:16:26 2007 +0000 +++ b/console/libgnt/gnttextview.c Thu Jan 11 03:56:44 2007 +0000 @@ -542,28 +542,39 @@ GntTextSegment *seg = segs->data; snext = segs->next; if (seg->start >= tag->end) { + /* The segment is somewhere after the tag */ seg->start -= change; seg->end -= change; - continue; + } else if (seg->end <= tag->start) { + /* This segment is somewhere in front of the tag */ + } else if (seg->start >= tag->start) { + /* This segment starts in the middle of the tag */ + if (text == NULL) { + free_text_segment(seg, NULL); + line->segments = g_list_delete_link(line->segments, segs); + if (line->segments == NULL) { + free_text_line(line, NULL); + view->list = g_list_delete_link(view->list, iter); + } + } else { + /* XXX: (null) */ + seg->start = tag->start; + seg->end = tag->end - change; + } + line->length -= change; + /* XXX: Make things work if the tagged text spans over several lines. */ + } else { + /* XXX: handle the rest of the conditions */ + g_printerr("WTF! This needs to be handled properly!!\n"); } - if (seg->end < tag->start) - continue; - - if (seg->start >= tag->start && seg->end <= tag->end) { - free_text_segment(seg, NULL); - line->segments = g_list_delete_link(line->segments, segs); - if (line->segments == NULL) { - free_text_line(line, NULL); - view->list = g_list_delete_link(view->list, iter); - } - } - /* XXX: handle the rest of the conditions */ } } if (text == NULL) { /* Remove the tag */ view->tags = g_list_delete_link(view->tags, list); free_tag(tag, NULL); + } else { + tag->end -= change; } if (!all) break;