summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <m.blumenkran@samsung.com>2013-06-24 05:59:59 +0100
committerMike Blumenkrantz <m.blumenkran@samsung.com>2013-06-24 05:59:59 +0100
commitf92b638061f465babb06781a7b7682e1265333bc (patch)
tree503989d96193ca86ec1207d3c30a5ab1df072cff
parent445ae27fad0ea9bbd4f8ba4ca3367d023342e3bf (diff)
downloadenlightenment-f92b638061f465babb06781a7b7682e1265333bc.tar.gz
fix path setting when opening fileman windows from "No listable items"
-rw-r--r--src/modules/fileman/e_mod_menu.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/modules/fileman/e_mod_menu.c b/src/modules/fileman/e_mod_menu.c
index e3e517395b..e644ce5f57 100644
--- a/src/modules/fileman/e_mod_menu.c
+++ b/src/modules/fileman/e_mod_menu.c
@@ -33,16 +33,17 @@ _e_mod_menu_gtk_cb(void *data,
static void
_e_mod_menu_virtual_cb(void *data,
E_Menu *m,
- E_Menu_Item *mi __UNUSED__)
+ E_Menu_Item *mi)
{
Evas_Object *fm;
+ Eina_Stringshare *path = e_object_data_get(E_OBJECT(mi));
m = _e_mod_menu_top_get(m);
fm = e_object_data_get(E_OBJECT(m));
if (fm && ((fileman_config->view.open_dirs_in_place && evas_object_data_get(fm, "page_is_window")) ||
(fileman_config->view.desktop_navigation && evas_object_data_get(fm, "page_is_zone"))))
- e_fm2_path_set(fm, data, "/");
- else if (m->zone) e_fwin_new(m->zone->container, data, "/");
+ e_fm2_path_set(fm, data, path ?: "/");
+ else if (m->zone) e_fwin_new(m->zone->container, data, path ?: "/");
}
static void
@@ -234,11 +235,17 @@ _e_mod_menu_populate_done(void *data, Eio_File *handler __UNUSED__)
if (!m->items)
{
E_Menu_Item *mi;
+ Eina_Stringshare *dev, *path;
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("No listable items"));
- e_object_data_set(E_OBJECT(mi), eina_stringshare_ref(e_object_data_get(data)));
- e_menu_item_callback_set(mi, _e_mod_menu_populate_cb, NULL);
+ dev = e_object_data_get(data);
+ path = e_object_data_get(E_OBJECT(e_menu_item_active_get()));
+ e_object_data_set(E_OBJECT(mi), eina_stringshare_ref(path));
+ if (dev && (dev[0] == '/'))
+ e_menu_item_callback_set(mi, _e_mod_menu_populate_cb, dev);
+ else
+ e_menu_item_callback_set(mi, _e_mod_menu_virtual_cb, dev);
}
else
m->items = eina_list_sort(m->items, 0, (Eina_Compare_Cb)_e_mod_menu_populate_sort);