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
*/
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,
e_fm2_pan_set,
e_fm2_pan_get,

View File

@ -7,6 +7,7 @@
/* actual module specifics */
static void _e_mod_action_fileman_cb(E_Object *obj,
const char *params);
static E_Menu *_e_mod_menu_top_get(E_Menu *m);
static void _e_mod_menu_gtk_cb(void *data,
E_Menu *m,
E_Menu_Item *mi);
@ -260,10 +261,13 @@ _e_mod_menu_gtk_cb(void *data,
E_Menu *m,
E_Menu_Item *mi __UNUSED__)
{
char *path;
Evas_Object *fm;
if (!(path = data)) return;
if (m->zone) e_fwin_new(m->zone->container, NULL, path);
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, NULL, data);
else if (m->zone) e_fwin_new(m->zone->container, NULL, data);
}
static void
@ -271,7 +275,13 @@ _e_mod_menu_virtual_cb(void *data,
E_Menu *m,
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
@ -280,10 +290,15 @@ _e_mod_menu_volume_cb(void *data,
E_Menu_Item *mi __UNUSED__)
{
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 (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);
}
else
@ -291,8 +306,10 @@ _e_mod_menu_volume_cb(void *data,
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "removable:%s", vol->udi);
e_fwin_new(e_container_current_get(e_manager_current_get()),
buf, "/");
if (fileman_config->view.open_dirs_in_place && fm && evas_object_data_get(fm, "page_is_window"))
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
_e_mod_menu_populate_cb(void *data,
E_Menu *m,
_e_mod_menu_populate_cb(void *data,
E_Menu *m,
E_Menu_Item *mi)
{
const char *path;
Evas_Object *fm;
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));
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