support setting the default menu explicitly.
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 25 Oct 2008 15:06:31 +0000 (15:06 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 25 Oct 2008 15:06:31 +0000 (15:06 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/efreet@37098 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/efreet_menu.c
src/lib/efreet_menu.h

index 77d4611..3f26f42 100644 (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);
index c22debd..79072e6 100644 (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);