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);

-- 


Reply via email to