support setting the default menu explicitly.

SVN revision: 37098
This commit is contained in:
Carsten Haitzler 2008-10-25 15:06:31 +00:00
parent 510146a383
commit 1065c6298a
2 changed files with 17 additions and 0 deletions

View File

@ -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);

View File

@ -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);