diff --git a/src/modules/fileman/e_fwin.c b/src/modules/fileman/e_fwin.c index e1ec84931..32ff8836b 100644 --- a/src/modules/fileman/e_fwin.c +++ b/src/modules/fileman/e_fwin.c @@ -2081,7 +2081,7 @@ _e_fwin_cb_menu_extend_start(void *data, selected = e_fm2_selected_list_get(page->fm_obj); #ifdef ENABLE_FILES - subm = e_mod_menu_add(m); + subm = e_mod_menu_add(m, e_fm2_real_path_get(page->fm_obj)); if (((!page->fwin->zone) || fileman_config->view.desktop_navigation) && e_fm2_has_parent_get(obj)) { diff --git a/src/modules/fileman/e_mod_main.c b/src/modules/fileman/e_mod_main.c index a1ca6bfe8..b6bf4f248 100644 --- a/src/modules/fileman/e_mod_main.c +++ b/src/modules/fileman/e_mod_main.c @@ -209,7 +209,7 @@ _e_mod_action_fileman_cb(E_Object *obj, void _e_mod_menu_add(void *data __UNUSED__, E_Menu *m) { - e_mod_menu_add(m); + e_mod_menu_add(m, NULL); } /* Abstract fileman config load/create to one function for maintainability */ diff --git a/src/modules/fileman/e_mod_main.h b/src/modules/fileman/e_mod_main.h index a2a521e94..e549d6c12 100644 --- a/src/modules/fileman/e_mod_main.h +++ b/src/modules/fileman/e_mod_main.h @@ -120,7 +120,7 @@ EAPI int e_modapi_save(E_Module *m); extern Config *fileman_config; Fileman_Path *e_mod_fileman_path_find(E_Zone *zone); -E_Menu *e_mod_menu_add(E_Menu *m); +E_Menu *e_mod_menu_add(E_Menu *m, const char *path); E_Config_Dialog *e_int_config_fileman(E_Container *con, const char *params __UNUSED__); diff --git a/src/modules/fileman/e_mod_menu.c b/src/modules/fileman/e_mod_menu.c index 073a7c254..885d7a9f0 100644 --- a/src/modules/fileman/e_mod_menu.c +++ b/src/modules/fileman/e_mod_menu.c @@ -296,10 +296,11 @@ _e_mod_menu_free(void *data) /* menu item add hook */ static void -_e_mod_menu_generate(void *data __UNUSED__, E_Menu *m) +_e_mod_menu_generate(void *data, E_Menu *m) { E_Volume *vol; E_Menu_Item *mi; + const char *path = data; const char *s; const Eina_List *l; Eina_Bool need_separator; @@ -308,6 +309,15 @@ _e_mod_menu_generate(void *data __UNUSED__, E_Menu *m) if (eina_list_count(m->items) > 4) return; /* parent, clone,, copy, and separator */ e_object_free_attach_func_set(E_OBJECT(m), _e_mod_menu_free); + if (path) + { + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, _("Current Directory")); + e_util_menu_item_theme_icon_set(mi, "folder"); + e_menu_item_submenu_pre_callback_set(mi, _e_mod_menu_populate, eina_stringshare_ref(path)); + } + eina_stringshare_del(path); + /* Home */ mi = e_menu_item_new(m); e_menu_item_label_set(mi, _("Home")); @@ -373,7 +383,7 @@ _e_mod_menu_generate(void *data __UNUSED__, E_Menu *m) /* returns submenu so we can add Go to Parent */ E_Menu * -e_mod_menu_add(E_Menu *m) +e_mod_menu_add(E_Menu *m, const char *path) { #ifdef ENABLE_FILES E_Menu_Item *mi; @@ -385,7 +395,7 @@ e_mod_menu_add(E_Menu *m) sub = e_menu_new(); e_menu_item_submenu_set(mi, sub); e_object_unref(E_OBJECT(sub)); //allow deletion whenever main menu deletes - e_menu_pre_activate_callback_set(sub, _e_mod_menu_generate, NULL); + e_menu_pre_activate_callback_set(sub, _e_mod_menu_generate, (void*)eina_stringshare_ref(path)); return sub; #else (void)m;