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 <cedric@osg.samsung.com>
This commit is contained in:
Jee-Yong Um 2016-02-05 08:13:11 +01:00 committed by Cedric BAIL
parent 2c2704c7f8
commit 895ed5bde3
7 changed files with 27 additions and 23 deletions

View File

@ -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;
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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