hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=a3185bc64be3fb30b22d175d180f717ca7f4c5ae
commit a3185bc64be3fb30b22d175d180f717ca7f4c5ae Author: Hermet Park <her...@hermet.pe.kr> Date: Tue Mar 8 16:52:25 2016 +0900 Revert "Revert "edc_editor: Support auto save to update preview."" This reverts commit b663d049dbfc9d63842930b5fa14f699da153eb7. 0.8.0 was released. revert this again. --- src/lib/auto_comp.c | 4 ++++ src/lib/edc_editor.c | 37 +++++++++++++++++++++++++++++++++++++ src/lib/enventor_private.h | 2 ++ 3 files changed, 43 insertions(+) diff --git a/src/lib/auto_comp.c b/src/lib/auto_comp.c index 664db9e..9754e62 100644 --- a/src/lib/auto_comp.c +++ b/src/lib/auto_comp.c @@ -506,6 +506,8 @@ list_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, { autocomp_data *ad = data; ad->list = NULL; + + edit_auto_save_timer_apply(ad->ed); } @@ -579,6 +581,8 @@ entry_tooltip_content_cb(void *data, Evas_Object *obj EINA_UNUSED, elm_list_go(ad->list); evas_object_show(ad->list); + edit_auto_save_timer_cancel(ad->ed); + return ad->list; } diff --git a/src/lib/edc_editor.c b/src/lib/edc_editor.c index f5a4c14..087bcee 100644 --- a/src/lib/edc_editor.c +++ b/src/lib/edc_editor.c @@ -13,6 +13,7 @@ const int MAX_LINE_DIGIT_CNT = 10; const int SYNTAX_COLOR_SPARE_LINES = 42; const double SYNTAX_COLOR_DEFAULT_TIME = 0.25; const double SYNTAX_COLOR_SHORT_TIME = 0.025; +const double AUTO_SAVE_TIME = 2.0; typedef struct syntax_color_thread_data_s { @@ -48,6 +49,7 @@ struct editor_s int right; } bracket; + Ecore_Timer *auto_save_timer; Ecore_Timer *syntax_color_timer; Ecore_Thread *syntax_color_thread; @@ -470,6 +472,8 @@ edit_changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) syntax_color_partial_update(ed, SYNTAX_COLOR_DEFAULT_TIME); parser_bracket_cancel(ed->pd); + + edit_auto_save_timer_apply(ed); } static void @@ -564,6 +568,8 @@ ctxpopup_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, { edit_data *ed = data; ed->ctxpopup = NULL; + + edit_auto_save_timer_apply(ed); } //This function is called when user press up/down key or mouse wheel up/down @@ -725,6 +731,8 @@ candidate_list_show(edit_data *ed, char *text, char *cur, char *selected) evas_object_event_callback_add(ctxpopup, EVAS_CALLBACK_DEL, ctxpopup_del_cb, ed); ed->ctxpopup = ctxpopup; elm_object_tree_focus_allow_set(ed->layout, EINA_FALSE); + + edit_auto_save_timer_cancel(ed); } static void @@ -1127,6 +1135,16 @@ edit_focused_cb(void *data, Evas_Object *obj EINA_UNUSED, evas_object_smart_callback_call(ed->enventor, SIG_FOCUSED, NULL); } +static Eina_Bool +auto_save_timer_cb(void *data) +{ + edit_data *ed = data; + edit_save(ed, build_edc_path_get()); + build_edc(); + ed->auto_save_timer = NULL; + return ECORE_CALLBACK_CANCEL; +} + /*****************************************************************************/ /* Externally accessible calls */ /*****************************************************************************/ @@ -1884,5 +1902,24 @@ edit_redoundo(edit_data *ed, Eina_Bool undo) edit_changed_set(ed, EINA_TRUE); syntax_color_full_update(ed, EINA_TRUE); + edit_auto_save_timer_apply(ed); + return EINA_TRUE; } + +void +edit_auto_save_timer_apply(edit_data *ed) +{ + if (ed->auto_save_timer) + ecore_timer_del(ed->auto_save_timer); + ed->auto_save_timer = ecore_timer_add(AUTO_SAVE_TIME, auto_save_timer_cb, + ed); +} + +void +edit_auto_save_timer_cancel(edit_data *ed) +{ + if (ed->auto_save_timer) + ecore_timer_del(ed->auto_save_timer); + ed->auto_save_timer = NULL; +} diff --git a/src/lib/enventor_private.h b/src/lib/enventor_private.h index c16e5e9..e1df42f 100644 --- a/src/lib/enventor_private.h +++ b/src/lib/enventor_private.h @@ -296,5 +296,7 @@ void edit_disabled_set(edit_data *ed, Eina_Bool disabled); void edit_error_set(edit_data *ed, int line, const char *target); void edit_text_insert(edit_data *ed, const char *text); void edit_part_cursor_set(edit_data *ed, const char *group_name, const char *part_name); +void edit_auto_save_timer_apply(edit_data *ed); +void edit_auto_save_timer_cancel(edit_data *ed); #endif --