ryuan pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=234e37c519584c221fc5623d31868ac86f9d4f5c
commit 234e37c519584c221fc5623d31868ac86f9d4f5c Author: Ryuan Choi <ryuan.c...@gmail.com> Date: Thu Dec 12 21:54:39 2013 +0900 Store last accessed path of load/save dialog to revisit next time. Summary: There are some use cases. User may re-open dialog when wrong file are selected. And user may want to save edc file which he loaded and modified. Reviewers: Hermet Reviewed By: Hermet CC: seoz Differential Revision: https://phab.enlightenment.org/D353 --- src/bin/menu.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/bin/menu.c b/src/bin/menu.c index a64e4a2..0d484d8 100644 --- a/src/bin/menu.c +++ b/src/bin/menu.c @@ -22,6 +22,8 @@ struct menu_s Evas_Object *ctxpopup; + const char *last_accessed_path; + void (*close_cb)(void *data); void *close_cb_data; @@ -731,12 +733,15 @@ save_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, } static void -fileselector_save_done_cb(void *data, Evas_Object *obj EINA_UNUSED, - void *event_info) +fileselector_save_done_cb(void *data, Evas_Object *obj, void *event_info) { menu_data *md = data; const char *selected = event_info; + if (md->last_accessed_path) + eina_stringshare_del(md->last_accessed_path); + md->last_accessed_path = eina_stringshare_add(elm_fileselector_path_get(obj)); + if (!selected) { fileselector_close(md); @@ -796,12 +801,15 @@ fileselector_save_selected_cb(void *data, Evas_Object *obj, void *event_info) } static void -fileselector_load_done_cb(void *data, Evas_Object *obj EINA_UNUSED, - void *event_info) +fileselector_load_done_cb(void *data, Evas_Object *obj, void *event_info) { menu_data *md = data; const char *selected = event_info; + if (md->last_accessed_path) + eina_stringshare_del(md->last_accessed_path); + md->last_accessed_path = eina_stringshare_add(elm_fileselector_path_get(obj)); + if (!selected) { fileselector_close(md); @@ -870,7 +878,7 @@ edc_file_save(menu_data *md) Evas_Object *fs = elm_fileselector_add(layout); elm_object_part_text_set(fs, "ok", "Save"); elm_object_part_text_set(fs, "cancel", "Close"); - elm_fileselector_path_set(fs, getenv("HOME")); + elm_fileselector_path_set(fs, md->last_accessed_path ? md->last_accessed_path : getenv("HOME")); elm_fileselector_expandable_set(fs, EINA_FALSE); elm_fileselector_is_save_set(fs, EINA_TRUE); evas_object_smart_callback_add(fs, "done", fileselector_save_done_cb, md); @@ -901,7 +909,7 @@ edc_file_load(menu_data *md) evas_object_show(layout); Evas_Object *fs = elm_fileselector_add(layout); - elm_fileselector_path_set(fs, getenv("HOME")); + elm_fileselector_path_set(fs, md->last_accessed_path ? md->last_accessed_path : getenv("HOME")); elm_object_part_text_set(fs, "ok", "Load"); elm_object_part_text_set(fs, "cancel", "Close"); elm_fileselector_expandable_set(fs, EINA_FALSE); --