hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=3024ee6ccaebb79dc249ecb8f710f37168eb6a15
commit 3024ee6ccaebb79dc249ecb8f710f37168eb6a15 Author: ChunEon Park <her...@hermet.pe.kr> Date: Wed Jan 29 21:56:29 2014 +0900 refactoring - removed menu_opened variable from the main. it's duplicated variable to require sync. menu itself keeps the menu_open status. --- src/bin/main.c | 26 ++++------ src/bin/menu.c | 141 +++++++++++++++++++---------------------------------- src/include/menu.h | 13 ++--- 3 files changed, 67 insertions(+), 113 deletions(-) diff --git a/src/bin/main.c b/src/bin/main.c index d2738e2..fdc11e1 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -18,7 +18,6 @@ struct app_s Eina_Bool ctrl_pressed : 1; Eina_Bool shift_pressed : 1; - Eina_Bool menu_opened : 1; }; int main(int argc, char **argv); @@ -304,13 +303,13 @@ main_key_down_cb(void *data, int type EINA_UNUSED, void *ev) //Main Menu if (!strcmp(event->keyname, "Escape")) { - ad->menu_opened = menu_toggle(); - if (!ad->menu_opened) + menu_toggle(); + if (menu_open_depth(ad->md) == 0) edit_focus_set(ad->ed); return ECORE_CALLBACK_DONE; } - if (ad->menu_opened) return ECORE_CALLBACK_PASS_ON; + if (menu_open_depth(ad->md) > 0) return ECORE_CALLBACK_PASS_ON; //Control Key if (!strcmp("Control_L", event->keyname)) @@ -321,25 +320,25 @@ main_key_down_cb(void *data, int type EINA_UNUSED, void *ev) //README if (!strcmp(event->keyname, "F1")) { - ad->menu_opened = menu_about(ad->md); + menu_about(ad->md); return ECORE_CALLBACK_DONE; } //New if (!strcmp(event->keyname, "F2")) { - ad->menu_opened = menu_edc_new(ad->md); + menu_edc_new(ad->md); return ECORE_CALLBACK_DONE; } //Save if (!strcmp(event->keyname, "F3")) { - ad->menu_opened = menu_edc_save(ad->md); + menu_edc_save(ad->md); return ECORE_CALLBACK_DONE; } //Load if (!strcmp(event->keyname, "F4")) { - ad->menu_opened = menu_edc_load(ad->md); + menu_edc_load(ad->md); return ECORE_CALLBACK_DONE; } //Line Number @@ -359,7 +358,7 @@ main_key_down_cb(void *data, int type EINA_UNUSED, void *ev) //Setting if (!strcmp(event->keyname, "F12")) { - ad->menu_opened = menu_setting(ad->md); + menu_setting(ad->md); return ECORE_CALLBACK_DONE; } @@ -576,13 +575,6 @@ elm_setup() } static void -menu_close_cb(void *data) -{ - app_data *ad = data; - ad->menu_opened = EINA_FALSE; -} - -static void edj_mgr_set(app_data *ad, config_data *cd) { ad->em = edj_mgr_init(ad->panes, cd); @@ -611,7 +603,7 @@ init(app_data *ad, int argc, char **argv) statusbar_set(ad, ad->cd); edc_edit_set(ad, ad->sd, ad->cd); edc_view_set(ad, ad->cd, ad->sd, stats_group_name_get(ad->sd)); - ad->md = menu_init(ad->win, ad->ed, ad->cd, menu_close_cb, ad); + ad->md = menu_init(ad->win, ad->ed, ad->cd); ad->edc_monitor = eio_monitor_add(config_edc_path_get(ad->cd)); ecore_event_handler_add(EIO_MONITOR_FILE_MODIFIED, edc_changed_cb, ad); diff --git a/src/bin/menu.c b/src/bin/menu.c index 9850330..2528f9e 100644 --- a/src/bin/menu.c +++ b/src/bin/menu.c @@ -20,18 +20,14 @@ struct menu_s Evas_Object *toggle_highlight; Evas_Object *toggle_swallow; Evas_Object *toggle_indent; - Evas_Object *ctxpopup; const char *last_accessed_path; - void (*close_cb)(void *data); - void *close_cb_data; + int open_depth; config_data *cd; edit_data *ed; - - Eina_Bool menu_open : 1; }; static menu_data *g_md; @@ -68,13 +64,10 @@ warning_close(menu_data *md) } static void -menu_close(menu_data *md, Eina_Bool toggled) +menu_close(menu_data *md) { - if (md->menu_layout) - elm_object_signal_emit(md->menu_layout, "elm,state,dismiss", ""); - - if (!toggled) - md->close_cb(md->close_cb_data); + if (!md->menu_layout) return; + elm_object_signal_emit(md->menu_layout, "elm,state,dismiss", ""); } static void @@ -85,6 +78,7 @@ fileselector_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED, menu_data *md = data; evas_object_del(md->fileselector_layout); md->fileselector_layout = NULL; + md->open_depth--; if (md->menu_layout) { elm_object_disabled_set(md->menu_layout, EINA_FALSE); @@ -100,6 +94,7 @@ setting_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED, menu_data *md = data; evas_object_del(md->setting_layout); md->setting_layout = NULL; + md->open_depth--; if (!md->menu_layout) return; elm_object_disabled_set(md->menu_layout, EINA_FALSE); elm_object_focus_set(md->menu_layout, EINA_TRUE); @@ -113,6 +108,7 @@ about_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED, menu_data *md = data; evas_object_del(md->about_layout); md->about_layout = NULL; + md->open_depth--; if (!md->menu_layout) return; elm_object_disabled_set(md->menu_layout, EINA_FALSE); elm_object_focus_set(md->menu_layout, EINA_TRUE); @@ -126,7 +122,7 @@ menu_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED, menu_data *md = data; evas_object_del(md->menu_layout); md->menu_layout = NULL; - md->menu_open = EINA_FALSE; + md->open_depth--; } static void @@ -137,6 +133,7 @@ warning_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED, menu_data *md = data; evas_object_del(md->warning_layout); md->warning_layout = NULL; + md->open_depth--; if (!md->menu_layout) return; elm_object_disabled_set(md->menu_layout, EINA_FALSE); elm_object_focus_set(md->menu_layout, EINA_TRUE); @@ -191,6 +188,7 @@ warning_layout_create(menu_data *md, Evas_Smart_Cb yes_cb, elm_object_disabled_set(md->menu_layout, EINA_TRUE); md->warning_layout = layout; + md->open_depth++; } static void @@ -567,6 +565,7 @@ setting_open(menu_data *md) md->toggle_highlight = toggle_highlight; md->toggle_swallow = toggle_swallow; md->toggle_indent = toggle_indent; + md->open_depth++; } static void @@ -630,6 +629,7 @@ about_open(menu_data *md) elm_object_disabled_set(md->menu_layout, EINA_TRUE); md->about_layout = layout; + md->open_depth++; err: if (strbuf) eina_strbuf_free(strbuf); @@ -661,7 +661,7 @@ new_yes_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, edc_reload(md, PROTO_EDC_PATH); warning_close(md); - menu_close(md, EINA_FALSE); + menu_close(md); } static void @@ -751,7 +751,7 @@ new_save_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, edit_save(md->ed); edc_reload(md, PROTO_EDC_PATH); warning_close(md); - menu_close(md, EINA_FALSE); + menu_close(md); } static void @@ -828,7 +828,7 @@ fileselector_save_done_cb(void *data, Evas_Object *obj, void *event_info) config_apply(md->cd); fileselector_close(md); - menu_close(md, EINA_FALSE); + menu_close(md); } static void @@ -889,7 +889,7 @@ fileselector_load_done_cb(void *data, Evas_Object *obj, void *event_info) edc_reload(md, selected); fileselector_close(md); - menu_close(md, EINA_FALSE); + menu_close(md); } static void @@ -929,6 +929,7 @@ edc_file_save(menu_data *md) elm_object_focus_set(fs, EINA_TRUE); md->fileselector_layout = layout; + md->open_depth++; } static void @@ -962,6 +963,7 @@ edc_file_load(menu_data *md) elm_object_focus_set(fs, EINA_TRUE); md->fileselector_layout = layout; + md->open_depth++; } static void @@ -983,18 +985,16 @@ load_save_btn_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, warning_close(md); } -Eina_Bool +void menu_about(menu_data *md) { about_open(md); - return EINA_TRUE; } -Eina_Bool +void menu_setting(menu_data *md) { setting_open(md); - return EINA_TRUE; } Eina_Bool @@ -1006,27 +1006,24 @@ menu_edc_new(menu_data *md) return EINA_TRUE; } edc_reload(md, PROTO_EDC_PATH); - menu_close(md, EINA_FALSE); + menu_close(md); return EINA_FALSE; } -Eina_Bool +void menu_edc_save(menu_data *md) { edc_file_save(md); - return EINA_TRUE; } -Eina_Bool +void menu_edc_load(menu_data *md) { if (edit_changed_get(md->ed)) warning_layout_create(md, load_yes_btn_cb, load_save_btn_cb); else edc_file_load(md); - - return EINA_TRUE; } static void @@ -1084,20 +1081,16 @@ menu_open(menu_data *md) ecore_timer_add(0.15, btn_effect_timer_cb, btn); md->menu_layout = layout; - - md->menu_open = EINA_TRUE; + md->open_depth++; } menu_data * -menu_init(Evas_Object *win, edit_data *ed, config_data *cd, - void (*close_cb)(void *data), void *data) +menu_init(Evas_Object *win, edit_data *ed, config_data *cd) { menu_data *md = calloc(1, sizeof(menu_data)); md->win = win; md->ed = ed; md->cd = cd; - md->close_cb = close_cb; - md->close_cb_data = data; g_md = md; return md; } @@ -1109,78 +1102,40 @@ menu_term(menu_data *md) free(md); } -Eina_Bool +void menu_toggle() { menu_data *md = g_md; - //Level 2 Menus - if (md->menu_open) - { - if (md->setting_layout) - { - setting_close(md); - return EINA_TRUE; - } - else if (md->warning_layout) - { - warning_close(md); - return EINA_TRUE; - } - else if (md->fileselector_layout) - { - fileselector_close(md); - return EINA_TRUE; - } - else if (md->about_layout) - { - about_close(md); - return EINA_TRUE; - } - } - //Short Cut Key Open Case - else + if (md->setting_layout) { - if (md->about_layout) - { - about_close(md); - return EINA_FALSE; - } - if (md->fileselector_layout) - { - fileselector_close(md); - return EINA_FALSE; - } - if (md->setting_layout) - { - setting_close(md); - return EINA_FALSE; - } - } - - //Ctxpopup - if (md->ctxpopup) - { - elm_ctxpopup_dismiss(md->ctxpopup); - return EINA_FALSE; + setting_close(md); + return; } - //Warning if (md->warning_layout) { warning_close(md); - return EINA_FALSE; + return; } - //Main Menu - if (md->menu_open) + if (md->fileselector_layout) + { + fileselector_close(md); + return; + } + if (md->about_layout) { - menu_close(md, EINA_TRUE); - return EINA_FALSE; + about_close(md); + return; } - else + if (md->ctxpopup) { - menu_open(md); - return EINA_TRUE; + elm_ctxpopup_dismiss(md->ctxpopup); + return; } + + //Main Menu + if (md->open_depth) menu_close(md); + else menu_open(md); } static void @@ -1208,3 +1163,9 @@ menu_ctxpopup_register(Evas_Object *ctxpopup) evas_object_event_callback_add(ctxpopup, EVAS_CALLBACK_DEL, ctxpopup_del_cb, md); } + +int +menu_open_depth(menu_data *md) +{ + return md->open_depth; +} diff --git a/src/include/menu.h b/src/include/menu.h index 2595212..c7bc7f7 100644 --- a/src/include/menu.h +++ b/src/include/menu.h @@ -1,13 +1,14 @@ #define VIEW_DATA edj_mgr_view_get(NULL, NULL) -menu_data *menu_init(Evas_Object *win, edit_data *ed, config_data *cd, void (*close_cb)(void *data), void *data); +menu_data *menu_init(Evas_Object *win, edit_data *ed, config_data *cd); void menu_term(menu_data *md); -Eina_Bool menu_toggle(); +void menu_toggle(); void menu_ctxpopup_register(Evas_Object *ctxpopup); void menu_ctxpopup_unregister(Evas_Object *ctxpopup); Eina_Bool menu_edc_new(menu_data *md); -Eina_Bool menu_edc_save(menu_data *md); -Eina_Bool menu_edc_load(menu_data *md); +void menu_edc_save(menu_data *md); +void menu_edc_load(menu_data *md); void menu_exit(menu_data *md); -Eina_Bool menu_about(menu_data *md); -Eina_Bool menu_setting(menu_data *md); +void menu_about(menu_data *md); +void menu_setting(menu_data *md); +int menu_open_depth(menu_data *md); --