hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=243d6a1330584a0778c67d4fb8968dbd74210836
commit 243d6a1330584a0778c67d4fb8968dbd74210836 Author: ChunEon Park <[email protected]> Date: Sat Nov 1 18:21:13 2014 +0900 app/file_mgr: open warning box deferred way. if envnetor opened menu or some other popups, edc modified warning box will be delayed to the editor has focus. --- src/bin/base_gui.c | 1 - src/bin/file_mgr.c | 40 +++++++++++++++++++++++++++++++--------- src/bin/main.c | 9 +++++++++ src/bin/menu.c | 2 ++ src/bin/newfile.c | 9 ++++++++- 5 files changed, 50 insertions(+), 11 deletions(-) diff --git a/src/bin/base_gui.c b/src/bin/base_gui.c index 7e1cd9a..c2e0fd3 100644 --- a/src/bin/base_gui.c +++ b/src/bin/base_gui.c @@ -141,7 +141,6 @@ base_live_view_set(Evas_Object *live_view) void base_console_toggle() { - base_data *bd = g_bd; panes_editors_full_view(); } diff --git a/src/bin/file_mgr.c b/src/bin/file_mgr.c index 8ccfdbc..fe3e261 100644 --- a/src/bin/file_mgr.c +++ b/src/bin/file_mgr.c @@ -11,8 +11,7 @@ typedef struct file_mgr_s { Evas_Object *enventor; Evas_Object *warning_layout; - - Eina_Bool edc_modified : 1; + int edc_modified; //1: edc is opened, 2: edc is changed } file_mgr_data; static file_mgr_data *g_fmd = NULL; @@ -104,6 +103,8 @@ warning_open(file_mgr_data *fmd) elm_object_part_content_set(layout, "elm.swallow.btn3", btn); fmd->warning_layout = layout; + + fmd->edc_modified = 0; } static void @@ -115,20 +116,34 @@ enventor_edc_modified_cb(void *data, Evas_Object *obj EINA_UNUSED, if (modified->self_changed) { - fmd->edc_modified = EINA_FALSE; + fmd->edc_modified = 0; return; } //file is opened first time, we don't regard edc is modified, so skip here. - if (!fmd->edc_modified) - { - fmd->edc_modified = EINA_TRUE; - return; - } + fmd->edc_modified++; + + if (fmd->edc_modified == 1) return; + + /* FIXME: Here ignore edc changes, if any menu is closed, + then we need to open warning box. */ + if (menu_activated_get()) return; warning_open(fmd); +} - fmd->edc_modified = EINA_FALSE; +void +file_mgr_reset(void) +{ + file_mgr_data *fmd = g_fmd; + fmd->edc_modified = 0; +} + +int +file_mgr_edc_modified_get(void) +{ + file_mgr_data *fmd = g_fmd; + return ((fmd->edc_modified == 2) ? EINA_TRUE : EINA_FALSE); } Eina_Bool @@ -139,6 +154,13 @@ file_mgr_warning_is_opened(void) } void +file_mgr_warning_open(void) +{ + file_mgr_data *fmd = g_fmd; + warning_open(fmd); +} + +void file_mgr_warning_close(void) { file_mgr_data *fmd = g_fmd; diff --git a/src/bin/main.c b/src/bin/main.c index 165db4e..5072944 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -414,6 +414,13 @@ enventor_ctxpopup_selected_cb(void *data EINA_UNUSED, Evas_Object *obj, } static void +enventor_focused_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + if (file_mgr_edc_modified_get()) file_mgr_warning_open(); +} + +static void enventor_setup(app_data *ad) { Evas_Object *enventor = enventor_object_add(base_layout_get()); @@ -431,6 +438,8 @@ enventor_setup(app_data *ad) enventor_program_run_cb, ad); evas_object_smart_callback_add(enventor, "ctxpopup,selected", enventor_ctxpopup_selected_cb, ad); + evas_object_smart_callback_add(enventor, "focused", + enventor_focused_cb, ad); enventor_object_font_scale_set(enventor, config_font_scale_get()); enventor_object_live_view_scale_set(enventor, config_view_scale_get()); diff --git a/src/bin/menu.c b/src/bin/menu.c index d70477e..5da4693 100644 --- a/src/bin/menu.c +++ b/src/bin/menu.c @@ -446,6 +446,7 @@ fileselector_save_done_cb(void *data, Evas_Object *obj, void *event_info) config_apply(); base_title_set(selected); + file_mgr_reset(); fileselector_close(md); menu_close(md); } @@ -510,6 +511,7 @@ fileselector_load_done_cb(void *data, Evas_Object *obj, void *event_info) base_title_set(selected); fileselector_close(md); menu_close(md); + file_mgr_reset(); } static void diff --git a/src/bin/newfile.c b/src/bin/newfile.c index 965fed6..e59b93d 100644 --- a/src/bin/newfile.c +++ b/src/bin/newfile.c @@ -1,4 +1,10 @@ -#include <Elementary.h> +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#define ENVENTOR_BETA_API_SUPPORT 1 + +#include <Enventor.h> #include "common.h" typedef struct new_data_s { @@ -45,6 +51,7 @@ newfile_set(Evas_Object *enventor, Eina_Bool template_new) } enventor_object_file_set(enventor, path); base_title_set(path); + file_mgr_reset(); } void --
