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

-- 


Reply via email to