From: Philip Chimento Date: Tue, 25 Mar 2014 06:16:53 +0000 (+0000) Subject: Reset Glk style hints at beginning of program X-Git-Url: https://git.stderr.nl/gitweb?p=projects%2Fchimara%2Fchimara.git;a=commitdiff_plain;h=523811df4155ac5a10b206cb16374d1383e108fc Reset Glk style hints at beginning of program The Glk program can change the style hints so that different styles display differently. These style hints should not carry over into the next execution of the Glk program, or even a different Glk program. This resets them at the beginning of a Glk program execution. --- diff --git a/libchimara/chimara-glk.c b/libchimara/chimara-glk.c index 29a7dce..4bbb3aa 100644 --- a/libchimara/chimara-glk.c +++ b/libchimara/chimara-glk.c @@ -1206,7 +1206,10 @@ chimara_glk_run(ChimaraGlk *glk, const gchar *plugin, int argc, char *argv[], GE /* Set the program name */ priv->program_name = g_path_get_basename(plugin); g_object_notify(G_OBJECT(glk), "program-name"); - + + /* Set Glk styles to defaults */ + style_reset_glk(glk); + /* Run in a separate thread */ priv->thread = g_thread_try_new("glk", (GThreadFunc)glk_enter, startup, error); diff --git a/libchimara/style.c b/libchimara/style.c index 6724076..b4aa029 100644 --- a/libchimara/style.c +++ b/libchimara/style.c @@ -231,8 +231,6 @@ style_init(ChimaraGlk *glk) GHashTable *default_text_grid_styles = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_object_unref); GHashTable *default_text_buffer_styles = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_object_unref); - GHashTable *glk_text_grid_styles = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_object_unref); - GHashTable *glk_text_buffer_styles = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_object_unref); GtkTextTag *tag; /* Initialise the default styles for a text grid */ @@ -335,6 +333,21 @@ style_init(ChimaraGlk *glk) priv->styles->text_grid = default_text_grid_styles; priv->styles->text_buffer = default_text_buffer_styles; + style_reset_glk(glk); +} + +/* Reset the style hints set from the Glk program to be blank. Call this when +starting a new game so that style hints from the previous game don't carry +over. */ +void +style_reset_glk(ChimaraGlk *glk) +{ + CHIMARA_GLK_USE_PRIVATE(glk, priv); + + GHashTable *glk_text_grid_styles = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_object_unref); + GHashTable *glk_text_buffer_styles = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_object_unref); + GtkTextTag *tag; + /* Initialize the GLK styles to empty tags */ int i; for(i=0; i