file right click -> Files -> X -> Y -> select(Z) now obeys open_dirs_in_place

SVN revision: 74931
This commit is contained in:
Mike Blumenkrantz 2012-08-06 12:44:29 +00:00
parent 1cb4d5f3ce
commit 0af70764a1
2 changed files with 47 additions and 10 deletions

View File

@ -827,6 +827,7 @@ _e_fwin_page_create(E_Fwin *fwin)
* to specify the .edj files to get the list and icon theme stuff from * to specify the .edj files to get the list and icon theme stuff from
*/ */
evas_object_data_set(page->fm_obj, "fm_page", page); evas_object_data_set(page->fm_obj, "fm_page", page);
evas_object_data_set(page->fm_obj, "page_is_window", page);
o = e_widget_scrollframe_pan_add(evas, page->fm_obj, o = e_widget_scrollframe_pan_add(evas, page->fm_obj,
e_fm2_pan_set, e_fm2_pan_set,
e_fm2_pan_get, e_fm2_pan_get,

View File

@ -7,6 +7,7 @@
/* actual module specifics */ /* actual module specifics */
static void _e_mod_action_fileman_cb(E_Object *obj, static void _e_mod_action_fileman_cb(E_Object *obj,
const char *params); const char *params);
static E_Menu *_e_mod_menu_top_get(E_Menu *m);
static void _e_mod_menu_gtk_cb(void *data, static void _e_mod_menu_gtk_cb(void *data,
E_Menu *m, E_Menu *m,
E_Menu_Item *mi); E_Menu_Item *mi);
@ -260,10 +261,13 @@ _e_mod_menu_gtk_cb(void *data,
E_Menu *m, E_Menu *m,
E_Menu_Item *mi __UNUSED__) E_Menu_Item *mi __UNUSED__)
{ {
char *path; Evas_Object *fm;
if (!(path = data)) return; m = _e_mod_menu_top_get(m);
if (m->zone) e_fwin_new(m->zone->container, NULL, path); fm = e_object_data_get(E_OBJECT(m));
if (fileman_config->view.open_dirs_in_place && fm && evas_object_data_get(fm, "page_is_window"))
e_fm2_path_set(fm, NULL, data);
else if (m->zone) e_fwin_new(m->zone->container, NULL, data);
} }
static void static void
@ -271,7 +275,13 @@ _e_mod_menu_virtual_cb(void *data,
E_Menu *m, E_Menu *m,
E_Menu_Item *mi __UNUSED__) E_Menu_Item *mi __UNUSED__)
{ {
if (m->zone) e_fwin_new(m->zone->container, data, "/"); Evas_Object *fm;
m = _e_mod_menu_top_get(m);
fm = e_object_data_get(E_OBJECT(m));
if (fileman_config->view.open_dirs_in_place && fm && evas_object_data_get(fm, "page_is_window"))
e_fm2_path_set(fm, data, "/");
else if (m->zone) e_fwin_new(m->zone->container, data, "/");
} }
static void static void
@ -280,10 +290,15 @@ _e_mod_menu_volume_cb(void *data,
E_Menu_Item *mi __UNUSED__) E_Menu_Item *mi __UNUSED__)
{ {
E_Volume *vol = data; E_Volume *vol = data;
Evas_Object *fm;
m = _e_mod_menu_top_get(m);
fm = e_object_data_get(E_OBJECT(m));
if (vol->mounted) if (vol->mounted)
{ {
if (m->zone) if (fileman_config->view.open_dirs_in_place && fm && evas_object_data_get(fm, "page_is_window"))
e_fm2_path_set(fm, NULL, vol->mount_point);
else if (m->zone)
e_fwin_new(m->zone->container, NULL, vol->mount_point); e_fwin_new(m->zone->container, NULL, vol->mount_point);
} }
else else
@ -291,8 +306,10 @@ _e_mod_menu_volume_cb(void *data,
char buf[PATH_MAX]; char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "removable:%s", vol->udi); snprintf(buf, sizeof(buf), "removable:%s", vol->udi);
e_fwin_new(e_container_current_get(e_manager_current_get()), if (fileman_config->view.open_dirs_in_place && fm && evas_object_data_get(fm, "page_is_window"))
buf, "/"); e_fm2_path_set(fm, buf, "/");
else if (m->zone)
e_fwin_new(m->zone->container, buf, "/");
} }
} }
@ -355,16 +372,35 @@ _e_mod_fileman_parse_gtk_bookmarks(E_Menu *m,
} }
} }
static E_Menu *
_e_mod_menu_top_get(E_Menu *m)
{
while (m->parent_item)
{
if (m->parent_item->menu->header.title)
break;
m = m->parent_item->menu;
}
return m;
}
static void static void
_e_mod_menu_populate_cb(void *data, _e_mod_menu_populate_cb(void *data,
E_Menu *m, E_Menu *m,
E_Menu_Item *mi) E_Menu_Item *mi)
{ {
const char *path; const char *path;
Evas_Object *fm;
if (!m->zone) return; if (!m->zone) return;
m = _e_mod_menu_top_get(m);
fm = e_object_data_get(E_OBJECT(m));
path = e_object_data_get(E_OBJECT(mi)); path = e_object_data_get(E_OBJECT(mi));
e_fwin_new(m->zone->container, data, path ?: "/"); if (fileman_config->view.open_dirs_in_place && fm && evas_object_data_get(fm, "page_is_window"))
e_fm2_path_set(fm, data, path ?: "/");
else if (m->zone)
e_fwin_new(m->zone->container, data, path ?: "/");
} }
static void static void