diff src/rcfile.c @ 1463:25168240a247

added function to reload external editors at any time eliminated init_after_global_options()
author nadvornik
date Fri, 20 Mar 2009 09:46:35 +0000
parents e015b6573d36
children 1b3751ac4743
line wrap: on
line diff
--- a/src/rcfile.c	Thu Mar 19 22:58:28 2009 +0000
+++ b/src/rcfile.c	Fri Mar 20 09:46:35 2009 +0000
@@ -775,8 +775,7 @@
 struct _GQParserData
 {
 	GList *parse_func_stack;
-	gboolean startup; /* reading config for the first time - add commandline and call init_after_global_options() */
-	gboolean global_found;
+	gboolean startup; /* reading config for the first time - add commandline and defaults */
 };
 
 
@@ -816,8 +815,8 @@
 
 static void options_parse_filter_end(GQParserData *parser_data, GMarkupParseContext *context, const gchar *element_name, gpointer data, GError **error)
 {
-	if (!parser_data->startup) filter_rebuild(); 
-	/* else this is called in init_after_global_options */
+	if (parser_data->startup) filter_add_defaults();
+	filter_rebuild(); 
 }
 
 static void options_parse_keyword_end(GQParserData *parser_data, GMarkupParseContext *context, const gchar *element_name, gpointer data, GError **error)
@@ -882,6 +881,12 @@
 		}
 }
 
+static void options_parse_global_end(GQParserData *parser_data, GMarkupParseContext *context, const gchar *element_name, gpointer data, GError **error)
+{
+	/* on startup there are no layout windows and this just loads the editors */
+	layout_editors_reload_all();
+}
+
 static void options_parse_pane_exif(GQParserData *parser_data, GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer data, GError **error)
 {
 	GtkWidget *pane = data;
@@ -990,17 +995,10 @@
 	if (g_ascii_strcasecmp(element_name, "global") == 0)
 		{
 		load_global_params(attribute_names, attribute_values);
-		options_parse_func_push(parser_data, options_parse_global, NULL, NULL);
+		options_parse_func_push(parser_data, options_parse_global, options_parse_global_end, NULL);
 		return;
 		}
 	
-	if (parser_data->startup && !parser_data->global_found)
-		{
-		DEBUG_1(" global end");
-		parser_data->global_found = TRUE;
-		init_after_global_options();
-		}
-	
 	if (g_ascii_strcasecmp(element_name, "layout") == 0)
 		{
 		LayoutWindow *lw;