comparison finch/libgnt/gnttextview.c @ 21306:14f06265d134

Clear the tags when the textview is cleared.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Mon, 12 Nov 2007 16:15:53 +0000
parents 9187d331aebe
children bc4afc8ea960
comparison
equal deleted inserted replaced
21305:0208beabfa33 21306:14f06265d134
58 static GntWidgetClass *parent_class = NULL; 58 static GntWidgetClass *parent_class = NULL;
59 59
60 static gchar *select_start; 60 static gchar *select_start;
61 static gchar *select_end; 61 static gchar *select_end;
62 static gboolean double_click; 62 static gboolean double_click;
63
64 static void reset_text_view(GntTextView *view);
63 65
64 static void 66 static void
65 gnt_text_view_draw(GntWidget *widget) 67 gnt_text_view_draw(GntWidget *widget)
66 { 68 {
67 GntTextView *view = GNT_TEXT_VIEW(widget); 69 GntTextView *view = GNT_TEXT_VIEW(widget);
368 back = g_list_last(view->list); 370 back = g_list_last(view->list);
369 view->list = NULL; 371 view->list = NULL;
370 372
371 string = view->string; 373 string = view->string;
372 view->string = NULL; 374 view->string = NULL;
373 gnt_text_view_clear(view); 375 reset_text_view(view);
374 376
375 view->string = g_string_set_size(view->string, string->len); 377 view->string = g_string_set_size(view->string, string->len);
376 view->string->len = 0; 378 view->string->len = 0;
377 GNT_WIDGET_SET_FLAGS(GNT_WIDGET(view), GNT_WIDGET_DRAWING); 379 GNT_WIDGET_SET_FLAGS(GNT_WIDGET(view), GNT_WIDGET_DRAWING);
378 380
652 fl |= gnt_color_pair(GNT_COLOR_NORMAL); 654 fl |= gnt_color_pair(GNT_COLOR_NORMAL);
653 655
654 return fl; 656 return fl;
655 } 657 }
656 658
657 void gnt_text_view_clear(GntTextView *view) 659 static void reset_text_view(GntTextView *view)
658 { 660 {
659 GntTextLine *line; 661 GntTextLine *line;
660 662
661 g_list_foreach(view->list, free_text_line, NULL); 663 g_list_foreach(view->list, free_text_line, NULL);
662 g_list_free(view->list); 664 g_list_free(view->list);
665 line = g_new0(GntTextLine, 1); 667 line = g_new0(GntTextLine, 1);
666 view->list = g_list_append(view->list, line); 668 view->list = g_list_append(view->list, line);
667 if (view->string) 669 if (view->string)
668 g_string_free(view->string, TRUE); 670 g_string_free(view->string, TRUE);
669 view->string = g_string_new(NULL); 671 view->string = g_string_new(NULL);
672 }
673
674 void gnt_text_view_clear(GntTextView *view)
675 {
676 reset_text_view(view);
677
678 g_list_foreach(view->tags, free_tag, NULL);
679 view->tags = NULL;
670 680
671 if (GNT_WIDGET(view)->window) 681 if (GNT_WIDGET(view)->window)
672 gnt_widget_draw(GNT_WIDGET(view)); 682 gnt_widget_draw(GNT_WIDGET(view));
673 } 683 }
674 684
831 editor_end_cb(int status, gpointer data) 841 editor_end_cb(int status, gpointer data)
832 { 842 {
833 if (status == 0) { 843 if (status == 0) {
834 char *text = NULL; 844 char *text = NULL;
835 if (g_file_get_contents(pageditor.file, &text, NULL, NULL)) { 845 if (g_file_get_contents(pageditor.file, &text, NULL, NULL)) {
836 gnt_text_view_clear(pageditor.tv); 846 reset_text_view(pageditor.tv);
837 gnt_text_view_append_text_with_flags(pageditor.tv, text, GNT_TEXT_FLAG_NORMAL); 847 gnt_text_view_append_text_with_flags(pageditor.tv, text, GNT_TEXT_FLAG_NORMAL);
838 gnt_text_view_scroll(GNT_TEXT_VIEW(pageditor.tv), 0); 848 gnt_text_view_scroll(GNT_TEXT_VIEW(pageditor.tv), 0);
839 g_free(text); 849 g_free(text);
840 } 850 }
841 } 851 }