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.
/* Set the program name */
priv->program_name = g_path_get_basename(plugin);
g_object_notify(G_OBJECT(glk), "program-name");
/* 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);
/* Run in a separate thread */
priv->thread = g_thread_try_new("glk", (GThreadFunc)glk_enter, startup, error);
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 *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 */
GtkTextTag *tag;
/* Initialise the default styles for a text grid */
priv->styles->text_grid = default_text_grid_styles;
priv->styles->text_buffer = default_text_buffer_styles;
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<style_NUMSTYLES; i++) {
/* Initialize the GLK styles to empty tags */
int i;
for(i=0; i<style_NUMSTYLES; i++) {
G_GNUC_INTERNAL void style_init_textbuffer(GtkTextBuffer *buffer);
G_GNUC_INTERNAL void style_init_textgrid(GtkTextBuffer *buffer);
G_GNUC_INTERNAL void style_init(ChimaraGlk *glk);
G_GNUC_INTERNAL void style_init_textbuffer(GtkTextBuffer *buffer);
G_GNUC_INTERNAL void style_init_textgrid(GtkTextBuffer *buffer);
G_GNUC_INTERNAL void style_init(ChimaraGlk *glk);
+G_GNUC_INTERNAL void style_reset_glk(ChimaraGlk *glk);
G_GNUC_INTERNAL const gchar** style_get_tag_names();
G_GNUC_INTERNAL void reset_default_styles(ChimaraGlk *glk);
G_GNUC_INTERNAL GScanner *create_css_file_scanner(void);
G_GNUC_INTERNAL const gchar** style_get_tag_names();
G_GNUC_INTERNAL void reset_default_styles(ChimaraGlk *glk);
G_GNUC_INTERNAL GScanner *create_css_file_scanner(void);