Fixed freeing data at stop & start. Previously the root window was set to NULL when...
[rodin/chimara.git] / libchimara / garglk.c
index 4708174112eb3821b01294e3fa7bc75e1bd66822..5e801683233c1ca0208503f9ecf3afd1dce57fa6 100644 (file)
@@ -1,6 +1,24 @@
 #include <libchimara/glk.h>
+#include "chimara-glk-private.h"
+#include "stream.h"
+
+extern GPrivate *glk_data_key;
+
+void
+apply_reverse_color(GtkTextTag *tag, gpointer data)
+{
+       g_object_set_data( G_OBJECT(tag), "reverse_color", data );
+}
 
 void 
 garglk_set_reversevideo(glui32 reverse)
 {
+       printf("set_reversevideo(%d)\n", reverse);
+       ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
+       g_return_if_fail(glk_data->current_stream != NULL);
+       g_return_if_fail(glk_data->current_stream->window != NULL);
+
+       GtkTextTagTable *tags = gtk_text_buffer_get_tag_table( GTK_TEXT_BUFFER(glk_data->current_stream->window->widget) );
+       gtk_text_tag_table_foreach( tags, apply_reverse_color, GINT_TO_POINTER(reverse) );
 }
+