jackdanielz pushed a commit to branch master.

http://git.enlightenment.org/tools/erigo.git/commit/?id=435e17863bf3467008330e1b3b0293cab1f8720d

commit 435e17863bf3467008330e1b3b0293cab1f8720d
Author: Daniel Zaoui <daniel.za...@samsung.com>
Date:   Mon Nov 2 13:14:41 2015 +0200

    Improve dummy management
    
    Now the central manager knows if a session supports dummy objects and
    can choose whether or not if specific mode functions have to be invoked.
    
    This patch fixes a bug that was happening during C generation when a dummy
    was contained with other objects inside a container. In this case, the
    code that sets the contents of the container was not generated because
    the dummy object was expected but never created, leading to delayed
    properties never applied.
---
 src/lib/ffi_glue.c  | 7 +++++--
 src/lib/generator.c | 1 -
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/lib/ffi_glue.c b/src/lib/ffi_glue.c
index f34d865..5553818 100644
--- a/src/lib/ffi_glue.c
+++ b/src/lib/ffi_glue.c
@@ -99,19 +99,20 @@ manager_widget_content_add(Gui_Session *session, const 
Gui_Widget *wdg, void *da
         Gui_Widget_Property *prop = obj_container_item_prop_get(ci);
         Gui_Widget *w = NULL;
         Gui_Value *val;
+        Eid *eid = NULL;
 
         values_lst = prop_value_get(prop);
         EINA_LIST_FOREACH(values_lst, itr2, val)
           {
              if (gui_value_type_get(val) == GUI_TYPE_OBJECT)
                {
-                  Eid *eid = EID_ID_GET(val);
+                  eid = EID_ID_GET(val);
                   w = wdg_get(eid);
                }
           }
 
         /* Check for Eo object only if widget is active, */
-        if (w)
+        if (w && (!eid_is_dummy(eid) || session_dummy_supported(session)))
           {
              if (!session_wdg_exists(session, w))
                {
@@ -336,6 +337,8 @@ manager_widget_create(Gui_Session *session, const 
Gui_Widget *wdg, void *data)
 
    Session_Mode mode = session_mode_get(session);
 
+   if (eid_is_dummy(wdg_eid_get(wdg)) && !session_dummy_supported(session)) 
return EINA_TRUE;
+
    if (_modes_functions[mode].wdg_add &&
       _modes_functions[mode].wdg_add(session, wdg, data))
      {
diff --git a/src/lib/generator.c b/src/lib/generator.c
index a3fece3..cc1071b 100644
--- a/src/lib/generator.c
+++ b/src/lib/generator.c
@@ -437,7 +437,6 @@ _wdg_add_generate(Gui_Session *session, const Gui_Widget 
*wdg, void *data)
 {
    Widget_Context *wdg_ctx = data;
 
-   if (eid_is_dummy(wdg_eid_get(wdg))) return EINA_FALSE;
    /* Add widget's name into the list of variable declarations. */
    wdg_ctx->declarations = eina_list_append(wdg_ctx->declarations, 
wdg_eid_get(wdg));
 

-- 


Reply via email to