and fix key nav to be 100% right :) u can go into subdirs and go back to

parents with return/escape etc.


SVN revision: 25854
This commit is contained in:
Carsten Haitzler 2006-09-15 14:28:50 +00:00
parent 11ccc9a4fa
commit 6e12d30138
1 changed files with 56 additions and 3 deletions

View File

@ -2188,6 +2188,7 @@ _e_fm2_icon_sel_prev(Evas_Object *obj)
ic = l->prev->data;
break;
}
ic = NULL;
}
if (!ic)
{
@ -2220,6 +2221,7 @@ _e_fm2_icon_sel_next(Evas_Object *obj)
ic = l->next->data;
break;
}
ic = NULL;
}
if (!ic)
{
@ -2294,7 +2296,28 @@ _e_fm2_typebuf_run(Evas_Object *obj)
_e_fm2_typebuf_hide(obj);
ic = _e_fm2_icon_first_selected_find(obj);
if (ic)
evas_object_smart_callback_call(ic->sd->obj, "selected", NULL);
{
if ((S_ISDIR(ic->info.statinfo.st_mode)) &&
(ic->sd->config->view.open_dirs_in_place) &&
(!ic->sd->config->view.no_subdir_jump) &&
(!ic->sd->config->view.single_click)
)
{
char buf[4096], *dev = NULL;
if (ic->sd->dev) dev = strdup(ic->sd->dev);
if (ic->info.pseudo_link)
snprintf(buf, sizeof(buf), "%s/%s", ic->info.pseudo_dir, ic->info.file);
else
snprintf(buf, sizeof(buf), "%s/%s", ic->sd->path, ic->info.file);
e_fm2_path_set(ic->sd->obj, dev, buf);
E_FREE(dev);
}
else
{
evas_object_smart_callback_call(ic->sd->obj, "selected", NULL);
}
}
}
/* FIXME: prototype */
@ -2478,7 +2501,16 @@ _e_fm2_cb_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
if (sd->typebuf_visible)
_e_fm2_typebuf_hide(obj);
else
_e_fm2_icon_desel_any(obj);
{
ic = _e_fm2_icon_first_selected_find(obj);
if (ic)
_e_fm2_icon_desel_any(obj);
else
{
if (e_fm2_has_parent_get(obj))
e_fm2_parent_go(obj);
}
}
}
else if (!strcmp(ev->keyname, "Return"))
{
@ -2491,7 +2523,28 @@ _e_fm2_cb_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
ic = _e_fm2_icon_first_selected_find(obj);
if (ic)
evas_object_smart_callback_call(ic->sd->obj, "selected", NULL);
{
if ((S_ISDIR(ic->info.statinfo.st_mode)) &&
(ic->sd->config->view.open_dirs_in_place) &&
(!ic->sd->config->view.no_subdir_jump) &&
(!ic->sd->config->view.single_click)
)
{
char buf[4096], *dev = NULL;
if (ic->sd->dev) dev = strdup(ic->sd->dev);
if (ic->info.pseudo_link)
snprintf(buf, sizeof(buf), "%s/%s", ic->info.pseudo_dir, ic->info.file);
else
snprintf(buf, sizeof(buf), "%s/%s", ic->sd->path, ic->info.file);
e_fm2_path_set(ic->sd->obj, dev, buf);
E_FREE(dev);
}
else
{
evas_object_smart_callback_call(ic->sd->obj, "selected", NULL);
}
}
}
}
else if (!strcmp(ev->keyname, "Insert"))