From 1065c6298a55557c546442d2df7f1b4212838fa3 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sat, 25 Oct 2008 15:06:31 +0000 Subject: [PATCH] support setting the default menu explicitly. SVN revision: 37098 --- legacy/efreet/src/lib/efreet_menu.c | 16 ++++++++++++++++ legacy/efreet/src/lib/efreet_menu.h | 1 + 2 files changed, 17 insertions(+) diff --git a/legacy/efreet/src/lib/efreet_menu.c b/legacy/efreet/src/lib/efreet_menu.c index 77d46117b9..3f26f4278c 100644 --- a/legacy/efreet/src/lib/efreet_menu.c +++ b/legacy/efreet/src/lib/efreet_menu.c @@ -210,6 +210,7 @@ struct Efreet_Menu_Desktop static char *efreet_menu_prefix = NULL; /**< The $XDG_MENU_PREFIX env var */ Ecore_List *efreet_menu_kde_legacy_dirs = NULL; /**< The directories to use for KDELegacy entries */ static const char *efreet_tag_menu = NULL; +static char *efreet_menu_file = NULL; /**< A menu file set explicityl as default */ static Ecore_Hash *efreet_merged_menus = NULL; static Ecore_Hash *efreet_merged_dirs = NULL; @@ -538,6 +539,7 @@ void efreet_menu_shutdown(void) { IF_FREE(efreet_menu_prefix); + IF_FREE(efreet_menu_file); IF_FREE_HASH(efreet_menu_handle_cbs); IF_FREE_HASH(efreet_menu_filter_cbs); @@ -564,6 +566,14 @@ efreet_menu_new(void) return menu; } +EAPI void +efreet_menu_file_set(const char *file) +{ + IF_FREE(efreet_menu_file); + efreet_menu_file = NULL; + if (file) efreet_menu_file = strdup(file); +} + /** * @return Returns the Efreet_Menu_Internal representation of the default menu or * NULL if none found @@ -582,6 +592,12 @@ efreet_menu_get(void) if (ecore_file_exists(menu)) return efreet_menu_parse(menu); + if (efreet_menu_file) + { + if (ecore_file_exists(efreet_menu_file)) + return efreet_menu_parse(efreet_menu_file); + } + /* fallback to the XDG_CONFIG_DIRS */ config_dirs = efreet_config_dirs_get(); ecore_list_first_goto(config_dirs); diff --git a/legacy/efreet/src/lib/efreet_menu.h b/legacy/efreet/src/lib/efreet_menu.h index c22debd2e1..79072e6045 100644 --- a/legacy/efreet/src/lib/efreet_menu.h +++ b/legacy/efreet/src/lib/efreet_menu.h @@ -52,6 +52,7 @@ struct Efreet_Menu EAPI int efreet_menu_kde_legacy_init(void); EAPI Efreet_Menu *efreet_menu_new(void); +EAPI void efreet_menu_file_set(const char *file); EAPI Efreet_Menu *efreet_menu_get(void); EAPI Efreet_Menu *efreet_menu_parse(const char *path); EAPI int efreet_menu_save(Efreet_Menu *menu, const char *path);