From 2993abfb7dd5dab98f09e9767fe4c4bf987fa8aa Mon Sep 17 00:00:00 2001 From: rephorm Date: Wed, 20 Jun 2007 18:04:26 +0000 Subject: [PATCH] add efreet_type_alias() SVN revision: 30411 --- legacy/efreet/src/lib/efreet_desktop.c | 18 ++++++++++++++++++ legacy/efreet/src/lib/efreet_desktop.h | 2 ++ 2 files changed, 20 insertions(+) diff --git a/legacy/efreet/src/lib/efreet_desktop.c b/legacy/efreet/src/lib/efreet_desktop.c index e07805d9b1..7cfaf606a3 100644 --- a/legacy/efreet/src/lib/efreet_desktop.c +++ b/legacy/efreet/src/lib/efreet_desktop.c @@ -619,6 +619,24 @@ efreet_desktop_type_add(const char *type, Efreet_Desktop_Type_Parse_Cb parse_fun return id; } +/** + * @brief Add an alias for an existing desktop type. + * @param from_type the type to alias (e.g. EFREE_DESKTOP_TYPE_APPLICATION) + * @param alias the alias + * @return the new type id, or -1 if @p from_type was not valid + * + * This allows applications to add non-standard types that behave exactly as standard types. + */ +int +efreet_desktop_type_alias (int from_type, const char *alias) +{ + Efreet_Desktop_Type_Info *info; + info = ecore_list_goto_index(efreet_desktop_types, from_type); + if (!info) return -1; + + return efreet_desktop_type_add(alias, info->parse_func, info->save_func, info->free_func); +} + /** * @internal * @brief Free an Efreet Desktop_Type_Info struct diff --git a/legacy/efreet/src/lib/efreet_desktop.h b/legacy/efreet/src/lib/efreet_desktop.h index 62ba3309f2..b89c5d0914 100644 --- a/legacy/efreet/src/lib/efreet_desktop.h +++ b/legacy/efreet/src/lib/efreet_desktop.h @@ -134,6 +134,8 @@ int efreet_desktop_type_add(const char *type, Efreet_Desktop_Type_Parse_Cb parse_func, Efreet_Desktop_Type_Save_Cb save_func, Efreet_Desktop_Type_Free_Cb free_func); +int efreet_desktop_type_alias (int from_type, + const char *alias); void *efreet_desktop_type_data_get(Efreet_Desktop *desktop); Ecore_List *efreet_desktop_string_list_parse(const char *string);