From f2c304751a3ff6959048ab6c65788f7d7ff9c4c8 Mon Sep 17 00:00:00 2001 From: raster Date: Sat, 25 Oct 2008 15:06:31 +0000 Subject: [PATCH] support setting the default menu explicitly. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/efreet@37098 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/efreet_menu.c | 16 ++++++++++++++++ src/lib/efreet_menu.h | 1 + 2 files changed, 17 insertions(+) diff --git a/src/lib/efreet_menu.c b/src/lib/efreet_menu.c index 77d4611..3f26f42 100644 --- a/src/lib/efreet_menu.c +++ b/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/src/lib/efreet_menu.h b/src/lib/efreet_menu.h index c22debd..79072e6 100644 --- a/src/lib/efreet_menu.h +++ b/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); -- 2.7.4