yakov pushed a commit to branch master. http://git.enlightenment.org/tools/erigo.git/commit/?id=389f9ab8969304f6202078ce540e152448c0cfa0
commit 389f9ab8969304f6202078ce540e152448c0cfa0 Author: Yakov Goldberg <yako...@samsung.com> Date: Mon Jan 4 18:13:48 2016 +0200 Fix code generation of separators for menu --- src/lib/database.h | 1 + src/lib/generator.c | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/lib/database.h b/src/lib/database.h index 0926bab..3612219 100644 --- a/src/lib/database.h +++ b/src/lib/database.h @@ -143,6 +143,7 @@ typedef struct _Container_Desc Container_Desc; #define FILE_SET "file" #define CONTENT_SET "content_set" #define ITEM_PUSH "item_push" +#define ITEM_SEPARATOR_ADD "item_separator_add" Eina_Bool db_init(const char *db_path, const char *all_eo_path, const char *black_list); diff --git a/src/lib/generator.c b/src/lib/generator.c index c16fb10..8eeb5cf 100644 --- a/src/lib/generator.c +++ b/src/lib/generator.c @@ -481,19 +481,31 @@ _item_iterate(Gui_Session *session, Widget_Context *wdg_ctx, const Gui_Widget *w Global_Gen_Context *gl_ctx = wdg_ctx->gl_ctx; const Gui_Widget_Property *prop = item_container_item_prop_get(wit); Eid *wit_id = item_container_item_eid_get(wit); - const Op_Desc *op_desc; - const Eina_List *itr; + const Op_Desc *op_desc = NULL; + const Eina_List *itr = NULL; + Eina_Bool item_is_separator = EINA_FALSE; const char *item_name = NULL; if (item_container_item_public_get(wit) || item_container_item_subitems_get(wit)) item_name = eid_name_get(wit_id); + Eina_Stringshare *class_id = wdg_class_name_get(wdg); if (!class_id) { ERR("Property \"class\" is missing in widget: \"%s\"\n", wdg_name_get(wdg)); return; } - op_desc = prop_op_desc_get(prop); + + if (!strcmp(class_id, DB_DEF_MENU_CLASS)) + { + if (item_container_item_type_get(wit) == ITEM_SEPARATOR) + { + op_desc = db_mro_op_desc_get(DB_DEF_MENU_CLASS, DB_DEF_MENU_CLASS, ITEM_SEPARATOR_ADD); + item_is_separator = EINA_TRUE; + } + } + + if (!op_desc) op_desc = prop_op_desc_get(prop); if (!op_desc) { ERR("Op Desc for property: \"%s\" was not found in hash table.", prop_name_get(prop)); @@ -517,7 +529,7 @@ _item_iterate(Gui_Session *session, Widget_Context *wdg_ctx, const Gui_Widget *w else { eina_strbuf_append_printf(wdg_ctx->buf, " eo_do(%s, %s%s%s(", - wdg_name_get(wdg), item_name?item_name:"", item_name?" = ":"", + wdg_name_get(wdg), item_name ? item_name : "", item_name?" = ":"", db_op_desc_func_name_get(op_desc)); } if (item_name) wdg_ctx->declarations = eina_list_append(wdg_ctx->declarations, wit_id); @@ -534,6 +546,8 @@ _item_iterate(Gui_Session *session, Widget_Context *wdg_ctx, const Gui_Widget *w if (values_lst != itr) eina_strbuf_append_printf(wdg_ctx->buf, ", "); _format_string_add(val, wdg_ctx->buf); + /*If item is a separator add only first parameter, which is parent item*/ + if (item_is_separator) break; } if (legacy_name) { --