# HG changeset patch # User zas_ # Date 1236627266 0 # Node ID 57421a72868262b5336d6b0c6de3e221d4884e5a # Parent c0afd5cbaa232ba74f81d9d691d81b11f0ee8306 Revert changeset 1502. It brokes the spec: hidden desktop files from user directory should hide files from system directory with the same name. diff -r c0afd5cbaa23 -r 57421a728682 src/editors.c --- a/src/editors.c Mon Mar 09 12:44:06 2009 +0000 +++ b/src/editors.c Mon Mar 09 19:34:26 2009 +0000 @@ -152,7 +152,6 @@ const gchar *key = filename_from_path(path); gchar **categories, **only_show_in, **not_show_in; gchar *try_exec; - gboolean hidden = FALSE; if (g_hash_table_lookup(editors, key)) return FALSE; /* the file found earlier wins */ @@ -170,10 +169,17 @@ return FALSE; } + editor = g_new0(EditorDescription, 1); + + editor->key = g_strdup(key); + editor->file = g_strdup(path); + + g_hash_table_insert(editors, editor->key, editor); + if (g_key_file_get_boolean(key_file, DESKTOP_GROUP, "Hidden", NULL) || g_key_file_get_boolean(key_file, DESKTOP_GROUP, "NoDisplay", NULL)) { - hidden = TRUE; + editor->hidden = TRUE; } categories = g_key_file_get_string_list(key_file, DESKTOP_GROUP, "Categories", NULL, NULL); @@ -189,12 +195,12 @@ found = TRUE; break; } - if (!found) hidden = TRUE; + if (!found) editor->hidden = TRUE; g_strfreev(categories); } else { - hidden = TRUE; + editor->hidden = TRUE; } only_show_in = g_key_file_get_string_list(key_file, DESKTOP_GROUP, "OnlyShowIn", NULL, NULL); @@ -208,7 +214,7 @@ found = TRUE; break; } - if (!found) hidden = TRUE; + if (!found) editor->hidden = TRUE; g_strfreev(only_show_in); } @@ -223,34 +229,27 @@ found = TRUE; break; } - if (found) hidden = TRUE; + if (found) editor->hidden = TRUE; g_strfreev(not_show_in); } + try_exec = g_key_file_get_string(key_file, DESKTOP_GROUP, "TryExec", NULL); if (try_exec && !editor->hidden) { gchar *try_exec_res = g_find_program_in_path(try_exec); - if (!try_exec_res) hidden = TRUE; + if (!try_exec_res) editor->hidden = TRUE; g_free(try_exec_res); g_free(try_exec); } - if (hidden) + if (editor->hidden) { /* hidden editors will be deleted, no need to parse the rest */ g_key_file_free(key_file); - return FALSE; + return TRUE; } - - editor = g_new0(EditorDescription, 1); - editor->key = g_strdup(key); - editor->file = g_strdup(path); - editor->hidden = hidden; - - g_hash_table_insert(editors, editor->key, editor); - editor->name = g_key_file_get_locale_string(key_file, DESKTOP_GROUP, "Name", NULL, NULL); editor->icon = g_key_file_get_string(key_file, DESKTOP_GROUP, "Icon", NULL); @@ -571,7 +570,7 @@ { GString *string; gchar *pathl; - const gchar *p = NULL; + const gchar *p; string = g_string_new(""); @@ -621,6 +620,7 @@ p = ""; } + g_assert(p); while (*p != '\0') { /* must escape \, ", `, and $ to avoid problems,