diff --git a/configure.ac b/configure.ac index 72104d5..0b022b8 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ(2.62) -AC_INIT([cinnamon-menus], [3.0.1]) +AC_INIT([cinnamon-menus], [3.0.2]) AC_CONFIG_SRCDIR(libmenu/gmenu-tree.h) AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz]) diff --git a/libmenu/desktop-entries.c b/libmenu/desktop-entries.c index 2c8efac..3a9e96c 100644 --- a/libmenu/desktop-entries.c +++ b/libmenu/desktop-entries.c @@ -266,65 +266,54 @@ static DesktopEntryResultCode desktop_entry_load (DesktopEntry *entry) { - DesktopEntryResultCode rescode = DESKTOP_ENTRY_LOAD_FAIL_OTHER; - if (strstr (entry->path, "/menu-xdg/")) - return rescode; - + return DESKTOP_ENTRY_LOAD_FAIL_OTHER; if (entry->type == DESKTOP_ENTRY_DESKTOP) { GKeyFile *key_file = NULL; DesktopEntryDesktop *entry_desktop = (DesktopEntryDesktop*)entry; + const char *categories_str; + + entry_desktop->appinfo = g_desktop_app_info_new_from_filename (entry->path); + if (!entry_desktop->appinfo || + !g_app_info_get_name (G_APP_INFO (entry_desktop->appinfo)) || + !g_app_info_get_executable (G_APP_INFO (entry_desktop->appinfo))) + { + menu_verbose ("Failed to load \"%s\"\n", entry->path); + return DESKTOP_ENTRY_LOAD_FAIL_APPINFO; + } + + categories_str = g_desktop_app_info_get_categories (entry_desktop->appinfo); + if (categories_str) + { + char **categories; + int i; + + categories = g_strsplit (categories_str, ";", -1); + entry_desktop->categories = g_new0 (GQuark, g_strv_length (categories) + 1); + + for (i = 0; categories[i]; i++) + entry_desktop->categories[i] = g_quark_from_string (categories[i]); + + g_strfreev (categories); + } key_file = g_key_file_new (); - if (g_key_file_load_from_file (key_file, entry->path, 0, NULL)) - { - entry_desktop->appinfo = g_desktop_app_info_new_from_keyfile (key_file); - - if (!entry_desktop->appinfo || - !g_app_info_get_name (G_APP_INFO (entry_desktop->appinfo)) || - !g_app_info_get_executable (G_APP_INFO (entry_desktop->appinfo))) - { - menu_verbose ("Failed to load appinfo for \"%s\"\n", entry->path); - rescode = DESKTOP_ENTRY_LOAD_FAIL_APPINFO; - } - else - { - const char *categories_str; - categories_str = g_desktop_app_info_get_categories (entry_desktop->appinfo); - - if (categories_str) - { - char **categories; - int i; - - categories = g_strsplit (categories_str, ";", -1); - entry_desktop->categories = g_new0 (GQuark, g_strv_length (categories) + 1); - - for (i = 0; categories[i]; i++) - entry_desktop->categories[i] = g_quark_from_string (categories[i]); - - g_strfreev (categories); - } - - entry_desktop->showin = key_file_get_show_in (key_file); - - rescode = DESKTOP_ENTRY_LOAD_SUCCESS; - } - } + if (!g_key_file_load_from_file (key_file, entry->path, 0, NULL)) + entry_desktop->showin = TRUE; else - { - menu_verbose ("Failed to read contents of \"%s\"\n", entry->path); - rescode = DESKTOP_ENTRY_LOAD_FAIL_OTHER; - } + entry_desktop->showin = key_file_get_show_in (key_file); + g_key_file_free (key_file); + + return DESKTOP_ENTRY_LOAD_SUCCESS; } else if (entry->type == DESKTOP_ENTRY_DIRECTORY) { GKeyFile *key_file = NULL; GError *error = NULL; - rescode = DESKTOP_ENTRY_LOAD_SUCCESS; + DesktopEntryResultCode rescode = DESKTOP_ENTRY_LOAD_SUCCESS; key_file = g_key_file_new (); @@ -355,18 +344,13 @@ else menu_verbose ("Failed to load \"%s\"\n", entry->path); } + + return rescode; } else g_assert_not_reached (); - return rescode; -} - -static gboolean -code_failed (DesktopEntryResultCode code) -{ - return code == DESKTOP_ENTRY_LOAD_FAIL_OTHER || - code == DESKTOP_ENTRY_LOAD_FAIL_APPINFO; + return DESKTOP_ENTRY_LOAD_FAIL_OTHER; } DesktopEntry * @@ -405,7 +389,7 @@ code = desktop_entry_load (retval); *res_code = code; - if (code_failed (code)) + if (code < DESKTOP_ENTRY_LOAD_SUCCESS) { desktop_entry_unref (retval); return NULL; @@ -447,7 +431,7 @@ else g_assert_not_reached (); - if (code_failed (desktop_entry_load (entry))) + if (desktop_entry_load (entry) < DESKTOP_ENTRY_LOAD_SUCCESS) { desktop_entry_unref (entry); return NULL; diff --git a/libmenu/desktop-entries.h b/libmenu/desktop-entries.h index 7684faa..5a113ae 100644 --- a/libmenu/desktop-entries.h +++ b/libmenu/desktop-entries.h @@ -33,9 +33,9 @@ typedef enum { - DESKTOP_ENTRY_LOAD_SUCCESS = 0, - DESKTOP_ENTRY_LOAD_FAIL_OTHER, - DESKTOP_ENTRY_LOAD_FAIL_APPINFO + DESKTOP_ENTRY_LOAD_FAIL_OTHER = 0, + DESKTOP_ENTRY_LOAD_FAIL_APPINFO, + DESKTOP_ENTRY_LOAD_SUCCESS } DesktopEntryResultCode; typedef struct DesktopEntry DesktopEntry;