cedric pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=fe4a4693bd1a15f0dca048e295fa68ca3d407175

commit fe4a4693bd1a15f0dca048e295fa68ca3d407175
Author: Jee-Yong Um <con...@gmail.com>
Date:   Fri Feb 5 08:13:11 2016 +0100

    elm: add Elm.Layout as edje externals' contents instead of Edje.Object
    
    Summary:
    When edje external parts add its content, edje object is added,
    but it breaks elementary widget hierarchy.
    In Elementary, edje external can use Elm.Layout to add its content.
    
    Reviewers: cedric
    
    Reviewed By: cedric
    
    Subscribers: woohyun
    
    Differential Revision: https://phab.enlightenment.org/D3655
    
    Signed-off-by: Cedric BAIL <ced...@osg.samsung.com>
---
 src/edje_externals/elm.c          | 24 ++++++++++++++----------
 src/edje_externals/elm_bubble.c   |  4 ++--
 src/edje_externals/elm_frame.c    |  4 ++--
 src/edje_externals/elm_notify.c   |  4 ++--
 src/edje_externals/elm_panes.c    |  8 ++++----
 src/edje_externals/elm_scroller.c |  4 ++--
 src/edje_externals/private.h      |  2 +-
 7 files changed, 27 insertions(+), 23 deletions(-)

diff --git a/src/edje_externals/elm.c b/src/edje_externals/elm.c
index 9f6b872..744d289 100644
--- a/src/edje_externals/elm.c
+++ b/src/edje_externals/elm.c
@@ -270,8 +270,8 @@ external_common_icon_param_parse(Evas_Object **icon, 
Evas_Object *obj,
 }
 
 Evas_Object *
-external_common_param_edje_object_get(Evas_Object *obj,
-                                      const Edje_External_Param *p)
+external_common_param_elm_layout_get(Evas_Object *obj,
+                                     const Edje_External_Param *p)
 {
    Evas_Object *edje, *parent_widget, *ret;
    const char *file;
@@ -283,14 +283,18 @@ external_common_param_edje_object_get(Evas_Object *obj,
    edje_object_file_get(edje, &file, NULL);
 
    parent_widget = elm_widget_parent_widget_get(obj);
-   if (!parent_widget)
-     parent_widget = edje;
-
-   ret = edje_object_add(evas_object_evas_get(parent_widget));
-
-   if (edje_object_file_set(ret, file, p->s))
-     return ret;
-
+   if (parent_widget)
+     {
+        ret = elm_layout_add(parent_widget);
+        if (elm_layout_file_set(ret, file, p->s))
+          return ret;
+     }
+   else
+     {
+        ret = edje_object_add(evas_object_evas_get(edje));
+        if (edje_object_file_set(ret, file, p->s))
+          return ret;
+     }
    evas_object_del(ret);
    return NULL;
 }
diff --git a/src/edje_externals/elm_bubble.c b/src/edje_externals/elm_bubble.c
index 5ae04bc..686dea3 100644
--- a/src/edje_externals/elm_bubble.c
+++ b/src/edje_externals/elm_bubble.c
@@ -62,7 +62,7 @@ external_bubble_param_set(void *data EINA_UNUSED, Evas_Object 
*obj,
         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
           {
              Evas_Object *content = \
-                                    external_common_param_edje_object_get(obj, 
param);
+                                    external_common_param_elm_layout_get(obj, 
param);
              if ((strcmp(param->s, "")) && (!content)) return EINA_FALSE;
              elm_object_content_set(obj, content);
              return EINA_TRUE;
@@ -131,7 +131,7 @@ external_bubble_params_parse(void *data EINA_UNUSED, 
Evas_Object *obj,
         if (!strcmp(param->name, "info"))
           mem->info = eina_stringshare_add(param->s);
         else if (!strcmp(param->name, "content"))
-          mem->content = external_common_param_edje_object_get(obj, param);
+          mem->content = external_common_param_elm_layout_get(obj, param);
         else if (!strcmp(param->name, "label"))
           mem->label = eina_stringshare_add(param->s);
      }
diff --git a/src/edje_externals/elm_frame.c b/src/edje_externals/elm_frame.c
index f725da6..a59bfae 100644
--- a/src/edje_externals/elm_frame.c
+++ b/src/edje_externals/elm_frame.c
@@ -39,7 +39,7 @@ external_frame_param_set(void *data EINA_UNUSED, Evas_Object 
*obj,
         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
           {
              Evas_Object *content =
-                external_common_param_edje_object_get(obj,param);
+                external_common_param_elm_layout_get(obj,param);
              if ((strcmp(param->s, "")) && (!content)) return EINA_FALSE;
              elm_object_content_set(obj, content);
              return EINA_TRUE;
@@ -91,7 +91,7 @@ external_frame_params_parse(void *data EINA_UNUSED, 
Evas_Object *obj,
    EINA_LIST_FOREACH(params, l, param)
      {
         if (!strcmp(param->name, "content"))
-          mem->content = external_common_param_edje_object_get(obj, param);
+          mem->content = external_common_param_elm_layout_get(obj, param);
         else if (!strcmp(param->name, "label"))
           mem->label = eina_stringshare_add(param->s);
      }
diff --git a/src/edje_externals/elm_notify.c b/src/edje_externals/elm_notify.c
index 06c7aef..801bfe4 100644
--- a/src/edje_externals/elm_notify.c
+++ b/src/edje_externals/elm_notify.c
@@ -163,7 +163,7 @@ external_notify_param_set(void *data EINA_UNUSED,
        && (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING))
      {
         Evas_Object *content =
-          external_common_param_edje_object_get(obj, param);
+          external_common_param_elm_layout_get(obj, param);
         if ((strcmp(param->s, "")) && (!content))
           return EINA_FALSE;
         elm_object_content_set(obj, content);
@@ -247,7 +247,7 @@ external_notify_params_parse(void *data EINA_UNUSED, 
Evas_Object *obj,
    EINA_LIST_FOREACH(params, l, param)
      {
         if (!strcmp(param->name, "content"))
-          mem->content = external_common_param_edje_object_get(obj, param);
+          mem->content = external_common_param_elm_layout_get(obj, param);
         else if (!strcmp(param->name, "timeout"))
           {
              mem->timeout = param->d;
diff --git a/src/edje_externals/elm_panes.c b/src/edje_externals/elm_panes.c
index 153117c..5780aee 100644
--- a/src/edje_externals/elm_panes.c
+++ b/src/edje_externals/elm_panes.c
@@ -47,7 +47,7 @@ static Eina_Bool external_panes_param_set(void *data 
EINA_UNUSED,
    if ((!strcmp(param->name, "content left"))
        && (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING))
    {
-      Evas_Object *content = external_common_param_edje_object_get(obj, param);
+      Evas_Object *content = external_common_param_elm_layout_get(obj, param);
       if ((strcmp(param->s, "")) && (!content))
          return EINA_FALSE;
       elm_object_part_content_set(obj, "left", content);
@@ -56,7 +56,7 @@ static Eina_Bool external_panes_param_set(void *data 
EINA_UNUSED,
    else if ((!strcmp(param->name, "content right"))
             && (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING))
    {
-      Evas_Object *content = external_common_param_edje_object_get(obj, param);
+      Evas_Object *content = external_common_param_elm_layout_get(obj, param);
       if ((strcmp(param->s, "")) && (!content))
         return EINA_FALSE;
       elm_object_part_content_set(obj, "right", content);
@@ -141,9 +141,9 @@ external_panes_params_parse(void *data EINA_UNUSED, 
Evas_Object *obj,
    EINA_LIST_FOREACH(params, l, param)
      {
         if (!strcmp(param->name, "content left"))
-          mem->content_left = external_common_param_edje_object_get(obj, 
param);
+          mem->content_left = external_common_param_elm_layout_get(obj, param);
         else if (!strcmp(param->name, "content right"))
-          mem->content_right = external_common_param_edje_object_get(obj, 
param);
+          mem->content_right = external_common_param_elm_layout_get(obj, 
param);
         else if (!strcmp(param->name, "horizontal"))
           {
              mem->is_horizontal = EINA_TRUE;
diff --git a/src/edje_externals/elm_scroller.c 
b/src/edje_externals/elm_scroller.c
index 81c5f30..2cfebe7 100644
--- a/src/edje_externals/elm_scroller.c
+++ b/src/edje_externals/elm_scroller.c
@@ -32,7 +32,7 @@ static Eina_Bool external_scroller_param_set(void *data 
EINA_UNUSED,
    if (!strcmp(param->name, "content")
        && param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
      {
-        Evas_Object *content = external_common_param_edje_object_get(obj, 
param);
+        Evas_Object *content = external_common_param_elm_layout_get(obj, 
param);
         if ((strcmp(param->s, "")) && (!content))
           return EINA_FALSE;
         elm_object_content_set(obj, content);
@@ -76,7 +76,7 @@ static void * external_scroller_params_parse(void *data 
EINA_UNUSED,
    EINA_LIST_FOREACH(params, l, param)
      {
         if (!strcmp(param->name, "content"))
-          mem->content = external_common_param_edje_object_get(obj, param);
+          mem->content = external_common_param_elm_layout_get(obj, param);
      }
 
    return mem;
diff --git a/src/edje_externals/private.h b/src/edje_externals/private.h
index 22b863f..2f2d3ef 100644
--- a/src/edje_externals/private.h
+++ b/src/edje_externals/private.h
@@ -31,7 +31,7 @@ const char *external_translate(void *data, const char *orig);
 void external_common_params_free(void *params);
 void *external_common_params_parse_internal(size_t params_size, void *data, 
Evas_Object *obj, const Eina_List *params);
 Evas_Object *external_common_param_icon_get(Evas_Object *obj, const 
Edje_External_Param *param);
-Evas_Object *external_common_param_edje_object_get(Evas_Object *obj, const 
Edje_External_Param *p);
+Evas_Object *external_common_param_elm_layout_get(Evas_Object *obj, const 
Edje_External_Param *p);
 void external_common_icon_param_parse(Evas_Object **icon, Evas_Object *obj, 
const Eina_List *params);
 Eina_Bool external_common_param_get(void *data, const Evas_Object *obj, 
Edje_External_Param *param);
 Eina_Bool external_common_param_set(void *data, Evas_Object *obj, const 
Edje_External_Param *param);

-- 


Reply via email to