forked from enlightenment/efl
parent
75dd06bcb1
commit
2e4fb25922
|
@ -175,8 +175,6 @@ static Eina_Hash *efreet_menu_filter_cbs = NULL;
|
||||||
static Eina_Hash *efreet_menu_move_cbs = NULL;
|
static Eina_Hash *efreet_menu_move_cbs = NULL;
|
||||||
static Eina_Hash *efreet_menu_layout_cbs = NULL;
|
static Eina_Hash *efreet_menu_layout_cbs = NULL;
|
||||||
|
|
||||||
static Efreet_Menu *efreet_menu_internal_get(Efreet_Menu_Cb func, void *data);
|
|
||||||
|
|
||||||
static Efreet_Menu_Internal *efreet_menu_by_name_find(Efreet_Menu_Internal *internal,
|
static Efreet_Menu_Internal *efreet_menu_by_name_find(Efreet_Menu_Internal *internal,
|
||||||
const char *name,
|
const char *name,
|
||||||
Efreet_Menu_Internal **parent);
|
Efreet_Menu_Internal **parent);
|
||||||
|
@ -527,13 +525,71 @@ efreet_menu_file_set(const char *file)
|
||||||
EAPI void
|
EAPI void
|
||||||
efreet_menu_async_get(Efreet_Menu_Cb func, const void *data)
|
efreet_menu_async_get(Efreet_Menu_Cb func, const void *data)
|
||||||
{
|
{
|
||||||
efreet_menu_internal_get(func, (void*)data);
|
char menu[PATH_MAX];
|
||||||
|
const char *dir;
|
||||||
|
Eina_List *config_dirs, *l;
|
||||||
|
|
||||||
|
if (!func) return;
|
||||||
|
|
||||||
|
#ifndef STRICT_SPEC
|
||||||
|
/* prefer user set menu */
|
||||||
|
if (efreet_menu_file)
|
||||||
|
{
|
||||||
|
if (ecore_file_exists(efreet_menu_file))
|
||||||
|
efreet_menu_async_parse(efreet_menu_file, func, data);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* check the users config directory first */
|
||||||
|
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
|
||||||
|
efreet_config_home_get(), efreet_menu_prefix);
|
||||||
|
if (ecore_file_exists(menu))
|
||||||
|
efreet_menu_async_parse(menu, func, data);
|
||||||
|
|
||||||
|
/* fallback to the XDG_CONFIG_DIRS */
|
||||||
|
config_dirs = efreet_config_dirs_get();
|
||||||
|
EINA_LIST_FOREACH(config_dirs, l, dir)
|
||||||
|
{
|
||||||
|
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
|
||||||
|
dir, efreet_menu_prefix);
|
||||||
|
if (ecore_file_exists(menu))
|
||||||
|
efreet_menu_async_parse(menu, func, data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI Efreet_Menu *
|
EAPI Efreet_Menu *
|
||||||
efreet_menu_get(void)
|
efreet_menu_get(void)
|
||||||
{
|
{
|
||||||
return efreet_menu_internal_get(NULL, NULL);
|
char menu[PATH_MAX];
|
||||||
|
const char *dir;
|
||||||
|
Eina_List *config_dirs, *l;
|
||||||
|
|
||||||
|
#ifndef STRICT_SPEC
|
||||||
|
/* prefer user set menu */
|
||||||
|
if (efreet_menu_file)
|
||||||
|
{
|
||||||
|
if (ecore_file_exists(efreet_menu_file))
|
||||||
|
return efreet_menu_parse(efreet_menu_file);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* check the users config directory first */
|
||||||
|
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
|
||||||
|
efreet_config_home_get(), efreet_menu_prefix);
|
||||||
|
if (ecore_file_exists(menu))
|
||||||
|
return efreet_menu_parse(menu);
|
||||||
|
|
||||||
|
/* fallback to the XDG_CONFIG_DIRS */
|
||||||
|
config_dirs = efreet_config_dirs_get();
|
||||||
|
EINA_LIST_FOREACH(config_dirs, l, dir)
|
||||||
|
{
|
||||||
|
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
|
||||||
|
dir, efreet_menu_prefix);
|
||||||
|
if (ecore_file_exists(menu))
|
||||||
|
return efreet_menu_parse(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
|
@ -730,65 +786,6 @@ efreet_menu_dump(Efreet_Menu *menu, const char *indent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static Efreet_Menu *
|
|
||||||
efreet_menu_internal_get(Efreet_Menu_Cb func, void *data)
|
|
||||||
{
|
|
||||||
char menu[PATH_MAX];
|
|
||||||
const char *dir;
|
|
||||||
Eina_List *config_dirs, *l;
|
|
||||||
|
|
||||||
#ifndef STRICT_SPEC
|
|
||||||
/* prefer user set menu */
|
|
||||||
if (efreet_menu_file)
|
|
||||||
{
|
|
||||||
if (ecore_file_exists(efreet_menu_file))
|
|
||||||
{
|
|
||||||
if (func)
|
|
||||||
{
|
|
||||||
efreet_menu_async_parse(efreet_menu_file, func, data);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return efreet_menu_parse(efreet_menu_file);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* check the users config directory first */
|
|
||||||
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
|
|
||||||
efreet_config_home_get(), efreet_menu_prefix);
|
|
||||||
if (ecore_file_exists(menu))
|
|
||||||
{
|
|
||||||
if (func)
|
|
||||||
{
|
|
||||||
efreet_menu_async_parse(menu, func, data);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return efreet_menu_parse(menu);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* fallback to the XDG_CONFIG_DIRS */
|
|
||||||
config_dirs = efreet_config_dirs_get();
|
|
||||||
EINA_LIST_FOREACH(config_dirs, l, dir)
|
|
||||||
{
|
|
||||||
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
|
|
||||||
dir, efreet_menu_prefix);
|
|
||||||
if (ecore_file_exists(menu))
|
|
||||||
{
|
|
||||||
if (func)
|
|
||||||
{
|
|
||||||
efreet_menu_async_parse(menu, func, data);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return efreet_menu_parse(menu);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
* @return Returns a new Efreet_Menu_Internal struct
|
* @return Returns a new Efreet_Menu_Internal struct
|
||||||
|
|
Loading…
Reference in New Issue