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