Fixed freeing data at stop & start. Previously the root window was set to NULL when...
[rodin/chimara.git] / libchimara / garglk.c
1 #include <libchimara/glk.h>
2 #include "chimara-glk-private.h"
3 #include "stream.h"
4
5 extern GPrivate *glk_data_key;
6
7 void
8 apply_reverse_color(GtkTextTag *tag, gpointer data)
9 {
10         g_object_set_data( G_OBJECT(tag), "reverse_color", data );
11 }
12
13 void 
14 garglk_set_reversevideo(glui32 reverse)
15 {
16         printf("set_reversevideo(%d)\n", reverse);
17         ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
18         g_return_if_fail(glk_data->current_stream != NULL);
19         g_return_if_fail(glk_data->current_stream->window != NULL);
20
21         GtkTextTagTable *tags = gtk_text_buffer_get_tag_table( GTK_TEXT_BUFFER(glk_data->current_stream->window->widget) );
22         gtk_text_tag_table_foreach( tags, apply_reverse_color, GINT_TO_POINTER(reverse) );
23 }
24