forked from enlightenment/efl
elementary/layout: attach edje object API with eo compositing
Test Plan: make check Reviewers: Hermet, jpeg, cedric Subscribers: slotus.lee Differential Revision: https://phab.enlightenment.org/D3871 Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
This commit is contained in:
parent
a12e69c153
commit
8a988717e1
|
@ -815,4 +815,22 @@ group { name: "page_layout";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
group { "layout_edje";
|
||||||
|
parts {
|
||||||
|
rect { "red";
|
||||||
|
desc {
|
||||||
|
color_class: "red";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rect { "blue";
|
||||||
|
desc { "default";
|
||||||
|
}
|
||||||
|
desc { "changed";
|
||||||
|
color: 0 0 255 255;
|
||||||
|
link.base: "change" "test";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3108,7 +3108,7 @@ _chars_add_till_limit(Evas_Object *obj,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_efl_ui_text_elm_layout_signal_emit(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *sd, const char *emission, const char *source)
|
_efl_ui_text_edje_object_signal_emit(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *sd, const char *emission, const char *source)
|
||||||
{
|
{
|
||||||
/* always pass to both edje objs */
|
/* always pass to both edje objs */
|
||||||
edje_object_signal_emit(sd->entry_edje, emission, source);
|
edje_object_signal_emit(sd->entry_edje, emission, source);
|
||||||
|
@ -3122,7 +3122,7 @@ _efl_ui_text_elm_layout_signal_emit(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *sd, c
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_efl_ui_text_elm_layout_signal_callback_add (Eo *obj, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
|
_efl_ui_text_edje_object_signal_callback_add(Eo *obj, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
|
||||||
{
|
{
|
||||||
Evas_Object *ro;
|
Evas_Object *ro;
|
||||||
|
|
||||||
|
@ -3132,25 +3132,25 @@ _efl_ui_text_elm_layout_signal_callback_add (Eo *obj, Efl_Ui_Text_Data *sd, cons
|
||||||
|
|
||||||
wd->resize_obj = sd->entry_edje;
|
wd->resize_obj = sd->entry_edje;
|
||||||
|
|
||||||
elm_obj_layout_signal_callback_add
|
edje_obj_signal_callback_add
|
||||||
(eo_super(obj, MY_CLASS), emission, source, func_cb, data);
|
(eo_super(obj, MY_CLASS), emission, source, func_cb, data);
|
||||||
|
|
||||||
if (sd->scr_edje)
|
if (sd->scr_edje)
|
||||||
{
|
{
|
||||||
wd->resize_obj = sd->scr_edje;
|
wd->resize_obj = sd->scr_edje;
|
||||||
|
|
||||||
elm_obj_layout_signal_callback_add
|
edje_obj_signal_callback_add
|
||||||
(eo_super(obj, MY_CLASS), emission, source, func_cb, data);
|
(eo_super(obj, MY_CLASS), emission, source, func_cb, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
wd->resize_obj = ro;
|
wd->resize_obj = ro;
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void *
|
EOLIAN static void *
|
||||||
_efl_ui_text_elm_layout_signal_callback_del(Eo *obj, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb)
|
_efl_ui_text_edje_object_signal_callback_del(Eo *obj, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
|
||||||
{
|
{
|
||||||
Evas_Object *ro;
|
Evas_Object *ro;
|
||||||
void *data = NULL;
|
void *data_ptr;
|
||||||
|
|
||||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
|
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
|
||||||
|
|
||||||
|
@ -3158,19 +3158,19 @@ _efl_ui_text_elm_layout_signal_callback_del(Eo *obj, Efl_Ui_Text_Data *sd, const
|
||||||
|
|
||||||
wd->resize_obj = sd->entry_edje;
|
wd->resize_obj = sd->entry_edje;
|
||||||
|
|
||||||
data = elm_obj_layout_signal_callback_del
|
data_ptr = edje_obj_signal_callback_del
|
||||||
(eo_super(obj, MY_CLASS), emission, source, func_cb);
|
(eo_super(obj, MY_CLASS), emission, source, func_cb, data);
|
||||||
|
|
||||||
if (sd->scr_edje)
|
if (sd->scr_edje)
|
||||||
{
|
{
|
||||||
wd->resize_obj = sd->scr_edje;
|
wd->resize_obj = sd->scr_edje;
|
||||||
|
|
||||||
data = elm_obj_layout_signal_callback_del
|
data_ptr = edje_obj_signal_callback_del
|
||||||
(eo_super(obj, MY_CLASS), emission, source, func_cb);
|
(eo_super(obj, MY_CLASS), emission, source, func_cb, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
wd->resize_obj = ro;
|
wd->resize_obj = ro;
|
||||||
return data;
|
return data_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
|
@ -4,7 +4,8 @@ import elm_entry;
|
||||||
|
|
||||||
class Efl.Ui.Text (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
|
class Efl.Ui.Text (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
|
||||||
Elm.Interface.Atspi.Text, Elm.Interface.Atspi.Text.Editable, Efl.File,
|
Elm.Interface.Atspi.Text, Elm.Interface.Atspi.Text.Editable, Efl.File,
|
||||||
Efl.Ui.Selectable, Efl.Ui.Scrollable, Efl.Ui.Text.Interactive)
|
Efl.Ui.Selectable, Efl.Ui.Scrollable, Efl.Ui.Text.Interactive,
|
||||||
|
Edje.Object)
|
||||||
{
|
{
|
||||||
methods {
|
methods {
|
||||||
@property scrollable {
|
@property scrollable {
|
||||||
|
@ -377,6 +378,9 @@ class Efl.Ui.Text (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
|
||||||
Efl.Canvas.Group.group_del;
|
Efl.Canvas.Group.group_del;
|
||||||
Efl.Canvas.Group.group_show;
|
Efl.Canvas.Group.group_show;
|
||||||
Efl.Canvas.Group.group_hide;
|
Efl.Canvas.Group.group_hide;
|
||||||
|
Edje.Object.signal_callback_add;
|
||||||
|
Edje.Object.signal_callback_del;
|
||||||
|
Edje.Object.signal_emit;
|
||||||
Elm.Widget.activate;
|
Elm.Widget.activate;
|
||||||
Elm.Widget.focus_direction_manager_is;
|
Elm.Widget.focus_direction_manager_is;
|
||||||
Elm.Widget.theme_apply;
|
Elm.Widget.theme_apply;
|
||||||
|
@ -388,9 +392,6 @@ class Efl.Ui.Text (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
|
||||||
Elm.Layout.theme_enable;
|
Elm.Layout.theme_enable;
|
||||||
Elm.Layout.sizing_eval;
|
Elm.Layout.sizing_eval;
|
||||||
Elm.Layout.text.get;
|
Elm.Layout.text.get;
|
||||||
Elm.Layout.signal_callback_add;
|
|
||||||
Elm.Layout.signal_callback_del;
|
|
||||||
Elm.Layout.signal_emit;
|
|
||||||
Elm.Layout.text.set;
|
Elm.Layout.text.set;
|
||||||
Elm.Layout.content_aliases.get;
|
Elm.Layout.content_aliases.get;
|
||||||
Elm.Interface_Scrollable.policy.set;
|
Elm.Interface_Scrollable.policy.set;
|
||||||
|
|
|
@ -1005,7 +1005,7 @@ _back_btn_new(Evas_Object *obj, const char *title_label)
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_elm_naviframe_elm_layout_signal_emit(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, const char *emission, const char *source)
|
_elm_naviframe_edje_object_signal_emit(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, const char *emission, const char *source)
|
||||||
{
|
{
|
||||||
Elm_Object_Item *eo_top_it;
|
Elm_Object_Item *eo_top_it;
|
||||||
|
|
||||||
|
@ -1013,7 +1013,7 @@ _elm_naviframe_elm_layout_signal_emit(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSE
|
||||||
if (!eo_top_it) return;
|
if (!eo_top_it) return;
|
||||||
ELM_NAVIFRAME_ITEM_DATA_GET(eo_top_it, top_it);
|
ELM_NAVIFRAME_ITEM_DATA_GET(eo_top_it, top_it);
|
||||||
|
|
||||||
elm_obj_layout_signal_emit(VIEW(top_it), emission, source);
|
edje_obj_signal_emit(VIEW(top_it), emission, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* content/text smart functions proxying things to the top item, which
|
/* content/text smart functions proxying things to the top item, which
|
||||||
|
|
|
@ -498,9 +498,9 @@ _elm_popup_elm_layout_sizing_eval(Eo *obj, Elm_Popup_Data *sd)
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_elm_popup_elm_layout_signal_emit(Eo *obj EINA_UNUSED, Elm_Popup_Data *sd, const char *emission, const char *source)
|
_elm_popup_edje_object_signal_emit(Eo *obj EINA_UNUSED, Elm_Popup_Data *sd, const char *emission, const char *source)
|
||||||
{
|
{
|
||||||
elm_layout_signal_emit(sd->main_layout, emission, source);
|
edje_obj_signal_emit(sd->main_layout, emission, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static Eina_Bool
|
EOLIAN static Eina_Bool
|
||||||
|
|
|
@ -2998,7 +2998,7 @@ _chars_add_till_limit(Evas_Object *obj,
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_elm_entry_elm_layout_signal_emit(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd, const char *emission, const char *source)
|
_elm_entry_edje_object_signal_emit(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd, const char *emission, const char *source)
|
||||||
{
|
{
|
||||||
/* always pass to both edje objs */
|
/* always pass to both edje objs */
|
||||||
edje_object_signal_emit(sd->entry_edje, emission, source);
|
edje_object_signal_emit(sd->entry_edje, emission, source);
|
||||||
|
@ -3012,7 +3012,7 @@ _elm_entry_elm_layout_signal_emit(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd, const
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_elm_entry_elm_layout_signal_callback_add (Eo *obj, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
|
_elm_entry_edje_object_signal_callback_add(Eo *obj, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
|
||||||
{
|
{
|
||||||
Evas_Object *ro;
|
Evas_Object *ro;
|
||||||
|
|
||||||
|
@ -3022,25 +3022,25 @@ _elm_entry_elm_layout_signal_callback_add (Eo *obj, Elm_Entry_Data *sd, const ch
|
||||||
|
|
||||||
wd->resize_obj = sd->entry_edje;
|
wd->resize_obj = sd->entry_edje;
|
||||||
|
|
||||||
elm_obj_layout_signal_callback_add
|
edje_obj_signal_callback_add
|
||||||
(eo_super(obj, MY_CLASS), emission, source, func_cb, data);
|
(eo_super(obj, MY_CLASS), emission, source, func_cb, data);
|
||||||
|
|
||||||
if (sd->scr_edje)
|
if (sd->scr_edje)
|
||||||
{
|
{
|
||||||
wd->resize_obj = sd->scr_edje;
|
wd->resize_obj = sd->scr_edje;
|
||||||
|
|
||||||
elm_obj_layout_signal_callback_add
|
edje_obj_signal_callback_add
|
||||||
(eo_super(obj, MY_CLASS), emission, source, func_cb, data);
|
(eo_super(obj, MY_CLASS), emission, source, func_cb, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
wd->resize_obj = ro;
|
wd->resize_obj = ro;
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void *
|
EOLIAN static void *
|
||||||
_elm_entry_elm_layout_signal_callback_del(Eo *obj, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb)
|
_elm_entry_edje_object_signal_callback_del(Eo *obj, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
|
||||||
{
|
{
|
||||||
Evas_Object *ro;
|
Evas_Object *ro;
|
||||||
void *data = NULL;
|
void *data_ptr;
|
||||||
|
|
||||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
|
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
|
||||||
|
|
||||||
|
@ -3048,19 +3048,19 @@ _elm_entry_elm_layout_signal_callback_del(Eo *obj, Elm_Entry_Data *sd, const cha
|
||||||
|
|
||||||
wd->resize_obj = sd->entry_edje;
|
wd->resize_obj = sd->entry_edje;
|
||||||
|
|
||||||
data = elm_obj_layout_signal_callback_del
|
data_ptr = edje_obj_signal_callback_del
|
||||||
(eo_super(obj, MY_CLASS), emission, source, func_cb);
|
(eo_super(obj, MY_CLASS), emission, source, func_cb, data);
|
||||||
|
|
||||||
if (sd->scr_edje)
|
if (sd->scr_edje)
|
||||||
{
|
{
|
||||||
wd->resize_obj = sd->scr_edje;
|
wd->resize_obj = sd->scr_edje;
|
||||||
|
|
||||||
data = elm_obj_layout_signal_callback_del
|
data_ptr = edje_obj_signal_callback_del
|
||||||
(eo_super(obj, MY_CLASS), emission, source, func_cb);
|
(eo_super(obj, MY_CLASS), emission, source, func_cb, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
wd->resize_obj = ro;
|
wd->resize_obj = ro;
|
||||||
return data;
|
return data_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
|
|
|
@ -116,7 +116,7 @@ enum Elm.Cnp_Mode
|
||||||
|
|
||||||
class Elm.Entry (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
|
class Elm.Entry (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
|
||||||
Elm.Interface.Atspi.Text, Elm.Interface.Atspi.Text.Editable, Efl.File,
|
Elm.Interface.Atspi.Text, Elm.Interface.Atspi.Text.Editable, Efl.File,
|
||||||
Efl.Ui.Selectable, Efl.Ui.Scrollable)
|
Efl.Ui.Selectable, Efl.Ui.Scrollable, Edje.Object)
|
||||||
{
|
{
|
||||||
legacy_prefix: elm_entry;
|
legacy_prefix: elm_entry;
|
||||||
eo_prefix: elm_obj_entry;
|
eo_prefix: elm_obj_entry;
|
||||||
|
@ -942,6 +942,9 @@ class Elm.Entry (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
|
||||||
Efl.Canvas.Group.group_del;
|
Efl.Canvas.Group.group_del;
|
||||||
Efl.Canvas.Group.group_show;
|
Efl.Canvas.Group.group_show;
|
||||||
Efl.Canvas.Group.group_hide;
|
Efl.Canvas.Group.group_hide;
|
||||||
|
Edje.Object.signal_callback_add;
|
||||||
|
Edje.Object.signal_callback_del;
|
||||||
|
Edje.Object.signal_emit;
|
||||||
Elm.Widget.activate;
|
Elm.Widget.activate;
|
||||||
Elm.Widget.focus_direction_manager_is;
|
Elm.Widget.focus_direction_manager_is;
|
||||||
Elm.Widget.theme_apply;
|
Elm.Widget.theme_apply;
|
||||||
|
@ -953,9 +956,6 @@ class Elm.Entry (Elm.Layout, Elm.Interface_Scrollable, Efl.Ui.Clickable,
|
||||||
Elm.Layout.theme_enable;
|
Elm.Layout.theme_enable;
|
||||||
Elm.Layout.sizing_eval;
|
Elm.Layout.sizing_eval;
|
||||||
Elm.Layout.text.get;
|
Elm.Layout.text.get;
|
||||||
Elm.Layout.signal_callback_add;
|
|
||||||
Elm.Layout.signal_callback_del;
|
|
||||||
Elm.Layout.signal_emit;
|
|
||||||
Elm.Layout.text.set;
|
Elm.Layout.text.set;
|
||||||
Elm.Layout.content_aliases.get;
|
Elm.Layout.content_aliases.get;
|
||||||
Elm.Interface_Scrollable.policy.set;
|
Elm.Interface_Scrollable.policy.set;
|
||||||
|
|
|
@ -766,6 +766,7 @@ _elm_layout_efl_canvas_group_group_add(Eo *obj, Elm_Layout_Smart_Data *_pd EINA_
|
||||||
|
|
||||||
/* has to be there *before* parent's smart_add() */
|
/* has to be there *before* parent's smart_add() */
|
||||||
edje = edje_object_add(evas_object_evas_get(obj));
|
edje = edje_object_add(evas_object_evas_get(obj));
|
||||||
|
eo_composite_attach(obj, edje);
|
||||||
elm_widget_resize_object_set(obj, edje, EINA_TRUE);
|
elm_widget_resize_object_set(obj, edje, EINA_TRUE);
|
||||||
|
|
||||||
efl_canvas_group_add(eo_super(obj, MY_CLASS));
|
efl_canvas_group_add(eo_super(obj, MY_CLASS));
|
||||||
|
@ -909,21 +910,25 @@ _elm_layout_theme_set(Eo *obj, Elm_Layout_Smart_Data *sd, const char *klass, con
|
||||||
return _elm_layout_theme_internal(obj, sd);
|
return _elm_layout_theme_internal(obj, sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EAPI void
|
||||||
_elm_layout_signal_emit(Eo *obj, Elm_Layout_Smart_Data *_pd EINA_UNUSED, const char *emission, const char *source)
|
elm_layout_signal_emit(Evas_Object *obj, const char *emission, const char *source)
|
||||||
{
|
{
|
||||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
edje_obj_signal_emit(obj, emission, source);
|
||||||
|
}
|
||||||
|
|
||||||
edje_object_signal_emit(wd->resize_obj, emission, source);
|
EAPI void
|
||||||
|
elm_layout_signal_callback_add(Evas_Object *obj,
|
||||||
|
const char *emission, const char *source,
|
||||||
|
Edje_Signal_Cb func_cb, void *data)
|
||||||
|
{
|
||||||
|
edje_obj_signal_callback_add(obj, emission, source, func_cb, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_elm_layout_signal_callback_add(Eo *obj, Elm_Layout_Smart_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
|
_elm_layout_edje_object_signal_callback_add(Eo *obj, Elm_Layout_Smart_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
|
||||||
{
|
{
|
||||||
Edje_Signal_Data *esd;
|
Edje_Signal_Data *esd;
|
||||||
|
|
||||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
|
||||||
|
|
||||||
esd = ELM_NEW(Edje_Signal_Data);
|
esd = ELM_NEW(Edje_Signal_Data);
|
||||||
if (!esd) return;
|
if (!esd) return;
|
||||||
|
|
||||||
|
@ -935,18 +940,23 @@ _elm_layout_signal_callback_add(Eo *obj, Elm_Layout_Smart_Data *sd, const char *
|
||||||
sd->edje_signals = eina_list_append(sd->edje_signals, esd);
|
sd->edje_signals = eina_list_append(sd->edje_signals, esd);
|
||||||
|
|
||||||
edje_object_signal_callback_add
|
edje_object_signal_callback_add
|
||||||
(wd->resize_obj, emission, source,
|
(eo_super(obj, MY_CLASS), emission, source, _edje_signal_callback, esd);
|
||||||
_edje_signal_callback, esd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void*
|
EAPI void *
|
||||||
_elm_layout_signal_callback_del(Eo *obj, Elm_Layout_Smart_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb)
|
elm_layout_signal_callback_del(Evas_Object *obj,
|
||||||
|
const char *emission, const char *source,
|
||||||
|
Edje_Signal_Cb func_cb)
|
||||||
{
|
{
|
||||||
Edje_Signal_Data *esd = NULL;
|
return edje_obj_signal_callback_del(obj, emission, source, func_cb, NULL);
|
||||||
void *data = NULL;
|
}
|
||||||
Eina_List *l;
|
|
||||||
|
|
||||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
|
EOLIAN static void *
|
||||||
|
_elm_layout_edje_object_signal_callback_del(Eo *obj, Elm_Layout_Smart_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Edje_Signal_Data *esd;
|
||||||
|
Eina_List *l;
|
||||||
|
void *data_ptr;
|
||||||
|
|
||||||
EINA_LIST_FOREACH(sd->edje_signals, l, esd)
|
EINA_LIST_FOREACH(sd->edje_signals, l, esd)
|
||||||
{
|
{
|
||||||
|
@ -956,16 +966,13 @@ _elm_layout_signal_callback_del(Eo *obj, Elm_Layout_Smart_Data *sd, const char *
|
||||||
sd->edje_signals = eina_list_remove_list(sd->edje_signals, l);
|
sd->edje_signals = eina_list_remove_list(sd->edje_signals, l);
|
||||||
eina_stringshare_del(esd->emission);
|
eina_stringshare_del(esd->emission);
|
||||||
eina_stringshare_del(esd->source);
|
eina_stringshare_del(esd->source);
|
||||||
data = esd->data;
|
data_ptr = esd->data;
|
||||||
|
|
||||||
edje_object_signal_callback_del_full
|
|
||||||
(wd->resize_obj, emission, source,
|
|
||||||
_edje_signal_callback, esd);
|
|
||||||
|
|
||||||
|
edje_obj_signal_callback_del
|
||||||
|
(obj, emission, source, _edje_signal_callback, esd);
|
||||||
free(esd);
|
free(esd);
|
||||||
|
|
||||||
return data; /* stop at 1st match */
|
return data_ptr; /* stop at 1st match */
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1647,12 +1654,10 @@ _elm_layout_edje_get(Eo *obj, Elm_Layout_Smart_Data *_pd EINA_UNUSED)
|
||||||
return wd->resize_obj;
|
return wd->resize_obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static const char*
|
EAPI const char *
|
||||||
_elm_layout_data_get(const Eo *obj, Elm_Layout_Smart_Data *_pd EINA_UNUSED, const char *key)
|
elm_layout_data_get(const Evas_Object *obj, const char *key)
|
||||||
{
|
{
|
||||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
|
return edje_obj_data_get(obj, key);
|
||||||
|
|
||||||
return edje_object_data_get(wd->resize_obj, key);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* layout's sizing evaluation is deferred. evaluation requests are
|
/* layout's sizing evaluation is deferred. evaluation requests are
|
||||||
|
@ -1678,30 +1683,36 @@ _elm_layout_sizing_restricted_eval(Eo *obj, Elm_Layout_Smart_Data *sd, Eina_Bool
|
||||||
evas_object_smart_changed(obj);
|
evas_object_smart_changed(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static int
|
EAPI int
|
||||||
_elm_layout_freeze(Eo *obj, Elm_Layout_Smart_Data *_pd EINA_UNUSED)
|
elm_layout_freeze(Evas_Object *obj)
|
||||||
{
|
{
|
||||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, 1);
|
return edje_obj_freeze(obj);
|
||||||
ELM_LAYOUT_DATA_GET(obj, sd);
|
}
|
||||||
|
|
||||||
|
EOLIAN static int
|
||||||
|
_elm_layout_edje_object_freeze(Eo *obj, Elm_Layout_Smart_Data *sd)
|
||||||
|
{
|
||||||
if ((sd->frozen)++ != 0) return sd->frozen;
|
if ((sd->frozen)++ != 0) return sd->frozen;
|
||||||
|
|
||||||
edje_object_freeze(wd->resize_obj);
|
edje_obj_freeze(eo_super(obj, MY_CLASS));
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static int
|
EAPI int
|
||||||
_elm_layout_thaw(Eo *obj, Elm_Layout_Smart_Data *_pd EINA_UNUSED)
|
elm_layout_thaw(Evas_Object *obj)
|
||||||
{
|
{
|
||||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, 0);
|
return edje_obj_thaw(obj);
|
||||||
ELM_LAYOUT_DATA_GET(obj, sd);
|
}
|
||||||
|
|
||||||
|
EOLIAN static int
|
||||||
|
_elm_layout_edje_object_thaw(Eo *obj, Elm_Layout_Smart_Data *sd)
|
||||||
|
{
|
||||||
if (--(sd->frozen) != 0) return sd->frozen;
|
if (--(sd->frozen) != 0) return sd->frozen;
|
||||||
|
|
||||||
edje_object_thaw(wd->resize_obj);
|
edje_obj_thaw(eo_super(obj, MY_CLASS));
|
||||||
|
|
||||||
elm_obj_layout_sizing_eval(obj);
|
_elm_layout_sizing_eval(obj, sd);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ struct Elm.Layout_Part_Alias_Description
|
||||||
real_part: string; [[Target part name for the alias set on Elm.Layout_Part_Proxies_Description::real_part. An example of usage would be "default" on that field, with "elm.content.swallow" on this one]]
|
real_part: string; [[Target part name for the alias set on Elm.Layout_Part_Proxies_Description::real_part. An example of usage would be "default" on that field, with "elm.content.swallow" on this one]]
|
||||||
}
|
}
|
||||||
|
|
||||||
class Elm.Layout (Elm.Widget, Efl.Part, Efl.Container, Efl.File)
|
class Elm.Layout (Elm.Widget, Efl.Part, Efl.Container, Efl.File, Edje.Object)
|
||||||
{
|
{
|
||||||
legacy_prefix: elm_layout;
|
legacy_prefix: elm_layout;
|
||||||
eo_prefix: elm_obj_layout;
|
eo_prefix: elm_obj_layout;
|
||||||
|
@ -123,16 +123,6 @@ class Elm.Layout (Elm.Widget, Efl.Part, Efl.Container, Efl.File)
|
||||||
@in part_name: string; [[A part from loaded edje group.]]
|
@in part_name: string; [[A part from loaded edje group.]]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
freeze {
|
|
||||||
[[Freezes the Elementary layout object.
|
|
||||||
|
|
||||||
This function puts all changes on hold. Successive freezes will
|
|
||||||
nest, requiring an equal number of thaws.
|
|
||||||
|
|
||||||
See also @.thaw.
|
|
||||||
]]
|
|
||||||
return: int; [[The frozen state or 0 on error.]]
|
|
||||||
}
|
|
||||||
theme_enable {
|
theme_enable {
|
||||||
legacy: null;
|
legacy: null;
|
||||||
return: bool;
|
return: bool;
|
||||||
|
@ -206,23 +196,6 @@ class Elm.Layout (Elm.Widget, Efl.Part, Efl.Container, Efl.File)
|
||||||
text: string @nullable; [[The text to set.]]
|
text: string @nullable; [[The text to set.]]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
signal_callback_add {
|
|
||||||
[[Add a callback for a (Edje) signal emitted by a layout widget's
|
|
||||||
underlying Edje object.
|
|
||||||
|
|
||||||
This function connects a callback function to a signal emitted by
|
|
||||||
the underlying Edje object of $obj. Globs are accepted in either
|
|
||||||
the emission or source strings.
|
|
||||||
]]
|
|
||||||
params {
|
|
||||||
@in emission: string; [[The signal's name string.]]
|
|
||||||
@in source: string; [[The signal's source string.]]
|
|
||||||
@in func: Edje.Signal_Cb; [[The callback function to be executed
|
|
||||||
when the signal is emitted.]]
|
|
||||||
@in data: void_ptr @optional; [[A pointer to data to pass in to the
|
|
||||||
callback function.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
part_cursor_set {
|
part_cursor_set {
|
||||||
[[Sets a specific cursor for an edje part.]]
|
[[Sets a specific cursor for an edje part.]]
|
||||||
return: bool; [[$true on success or $false on failure, that may be
|
return: bool; [[$true on success or $false on failure, that may be
|
||||||
|
@ -243,78 +216,6 @@ class Elm.Layout (Elm.Widget, Efl.Part, Efl.Container, Efl.File)
|
||||||
legacy: null;
|
legacy: null;
|
||||||
return: bool;
|
return: bool;
|
||||||
}
|
}
|
||||||
data_get @const {
|
|
||||||
[[Get the edje data from the given layout.
|
|
||||||
|
|
||||||
This function fetches data specified inside the edje theme of
|
|
||||||
this layout. This function return NULL if data is not found.
|
|
||||||
|
|
||||||
In EDC this comes from a data block within the group block that
|
|
||||||
$obj was loaded from.
|
|
||||||
]]
|
|
||||||
/* FIXME-doc
|
|
||||||
@code
|
|
||||||
collections {
|
|
||||||
group {
|
|
||||||
name: "a_group";
|
|
||||||
data {
|
|
||||||
item: "key1" "value1";
|
|
||||||
item: "key2" "value2";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@endcode
|
|
||||||
*/
|
|
||||||
return: string; [[The edje data string.]]
|
|
||||||
params {
|
|
||||||
@in key: string; [[The data key.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
signal_callback_del {
|
|
||||||
[[Remove a signal-triggered callback from a given layout widget.
|
|
||||||
|
|
||||||
This function removes the last callback attached to a signal
|
|
||||||
emitted by the undelying Edje object of $obj, with parameters
|
|
||||||
$emission, $source and $func matching exactly those passed to a
|
|
||||||
previous call to @.signal_callback_add. The data pointer that
|
|
||||||
was passed to this call will be returned.
|
|
||||||
]]
|
|
||||||
return: void_ptr; [[The data pointer of the signal callback (passed on
|
|
||||||
@.signal_callback_add) or $null on errors.]]
|
|
||||||
params {
|
|
||||||
@in emission: string; [[The signal's name string.]]
|
|
||||||
@in source: string; [[The signal's source string.]]
|
|
||||||
@in func: Edje.Signal_Cb; [[The callback function being executed
|
|
||||||
when the signal was emitted.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
thaw {
|
|
||||||
[[Thaws the Elementary object.
|
|
||||||
|
|
||||||
This function thaws the given Edje object and the Elementary
|
|
||||||
sizing calc.
|
|
||||||
|
|
||||||
Note: If sucessives freezes were done, an equal number of
|
|
||||||
thaws will be required.
|
|
||||||
|
|
||||||
See also @.freeze.
|
|
||||||
]]
|
|
||||||
return: int; [[The frozen state or 0 if the object is not frozen or on error.]]
|
|
||||||
}
|
|
||||||
signal_emit {
|
|
||||||
[[Send a (Edje) signal to a given layout widget's underlying Edje
|
|
||||||
object.
|
|
||||||
|
|
||||||
This function sends a signal to the underlying Edje object of
|
|
||||||
$obj. An Edje program on that Edje object's definition can
|
|
||||||
respond to a signal by specifying matching 'signal' and
|
|
||||||
'source' fields.
|
|
||||||
]]
|
|
||||||
params {
|
|
||||||
@in emission: string; [[The signal's name string.]]
|
|
||||||
@in source: string; [[The signal's source string.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
part_cursor_unset {
|
part_cursor_unset {
|
||||||
[[Unsets a cursor previously set with @.part_cursor_set.]]
|
[[Unsets a cursor previously set with @.part_cursor_set.]]
|
||||||
return: bool;
|
return: bool;
|
||||||
|
@ -351,6 +252,10 @@ class Elm.Layout (Elm.Widget, Efl.Part, Efl.Container, Efl.File)
|
||||||
Efl.Container.content.get;
|
Efl.Container.content.get;
|
||||||
Efl.Container.content_unset;
|
Efl.Container.content_unset;
|
||||||
Efl.Part.part;
|
Efl.Part.part;
|
||||||
|
Edje.Object.freeze;
|
||||||
|
Edje.Object.thaw;
|
||||||
|
Edje.Object.signal_callback_add;
|
||||||
|
Edje.Object.signal_callback_del;
|
||||||
}
|
}
|
||||||
events {
|
events {
|
||||||
theme,changed;
|
theme,changed;
|
||||||
|
|
|
@ -241,4 +241,105 @@ EAPI Evas_Object *elm_layout_table_unpack(Evas_Object *obj, const char *part, Ev
|
||||||
*/
|
*/
|
||||||
EAPI Eina_Bool elm_layout_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear);
|
EAPI Eina_Bool elm_layout_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the edje data from the given layout.
|
||||||
|
*
|
||||||
|
* This function fetches data specified inside the edje theme of this layout.
|
||||||
|
* This function return NULL if data is not found.
|
||||||
|
*
|
||||||
|
* In EDC this comes from a data block within the group block that @c obj was
|
||||||
|
* loaded from.
|
||||||
|
*
|
||||||
|
* @param[in] key The data key.
|
||||||
|
*
|
||||||
|
* @return The edje data string.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Layout
|
||||||
|
*/
|
||||||
|
EAPI const char *elm_layout_data_get(const Elm_Layout *obj, const char *key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Send a (Edje) signal to a given layout widget's underlying Edje
|
||||||
|
* object.
|
||||||
|
*
|
||||||
|
* This function sends a signal to the underlying Edje object of @c obj. An
|
||||||
|
* Edje program on that Edje object's definition can respond to a signal by
|
||||||
|
* specifying matching 'signal' and 'source' fields.
|
||||||
|
*
|
||||||
|
* @param[in] emission The signal's name string.
|
||||||
|
* @param[in] source The signal's source string.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Layout
|
||||||
|
*/
|
||||||
|
EAPI void elm_layout_signal_emit(Elm_Layout *obj, const char *emission, const char *source);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Add a callback for a (Edje) signal emitted by a layout widget's
|
||||||
|
* underlying Edje object.
|
||||||
|
*
|
||||||
|
* This function connects a callback function to a signal emitted by the
|
||||||
|
* underlying Edje object of @c obj. Globs are accepted in either the emission
|
||||||
|
* or source strings.
|
||||||
|
*
|
||||||
|
* @param[in] emission The signal's name string.
|
||||||
|
* @param[in] source The signal's source string.
|
||||||
|
* @param[in] func The callback function to be executed when the signal is
|
||||||
|
* emitted.
|
||||||
|
* @param[in] data A pointer to data to pass in to the callback function.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Layout
|
||||||
|
*/
|
||||||
|
EAPI void elm_layout_signal_callback_add(Elm_Layout *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Remove a signal-triggered callback from a given layout widget.
|
||||||
|
*
|
||||||
|
* This function removes the last callback attached to a signal emitted by the
|
||||||
|
* undelying Edje object of @c obj, with parameters @c emission, @c source and
|
||||||
|
* @c func matching exactly those passed to a previous call to
|
||||||
|
* @ref elm_layout_signal_callback_add. The data pointer that was passed to
|
||||||
|
* this call will be returned.
|
||||||
|
*
|
||||||
|
* @param[in] emission The signal's name string.
|
||||||
|
* @param[in] source The signal's source string.
|
||||||
|
* @param[in] func The callback function being executed when the signal was
|
||||||
|
* emitted.
|
||||||
|
*
|
||||||
|
* @return The data pointer of the signal callback (passed on
|
||||||
|
* @ref elm_layout_signal_callback_add) or @c null on errors.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Layout
|
||||||
|
*/
|
||||||
|
EAPI void *elm_layout_signal_callback_del(Elm_Layout *obj, const char *emission, const char *source, Edje_Signal_Cb func);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Freezes the Elementary layout object.
|
||||||
|
*
|
||||||
|
* This function puts all changes on hold. Successive freezes will nest,
|
||||||
|
* requiring an equal number of thaws.
|
||||||
|
*
|
||||||
|
* See also @ref elm_layout_thaw.
|
||||||
|
*
|
||||||
|
* @return The frozen state or 0 on error.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Layout
|
||||||
|
*/
|
||||||
|
EAPI int elm_layout_freeze(Elm_Layout *obj);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Thaws the Elementary object.
|
||||||
|
*
|
||||||
|
* This function thaws the given Edje object and the Elementary sizing calc.
|
||||||
|
*
|
||||||
|
* @note If sucessives freezes were done, an equal number of thaws will be
|
||||||
|
* required.
|
||||||
|
*
|
||||||
|
* See also @ref elm_layout_freeze.
|
||||||
|
*
|
||||||
|
* @return The frozen state or 0 if the object is not frozen or on error.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Layout
|
||||||
|
*/
|
||||||
|
EAPI int elm_layout_thaw(Elm_Layout *obj);
|
||||||
|
|
||||||
#include "elm_layout.eo.legacy.h"
|
#include "elm_layout.eo.legacy.h"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
class Elm.Naviframe (Elm.Layout, Elm.Interface.Atspi_Widget_Action)
|
class Elm.Naviframe (Elm.Layout, Elm.Interface.Atspi_Widget_Action, Edje.Object)
|
||||||
{
|
{
|
||||||
legacy_prefix: elm_naviframe;
|
legacy_prefix: elm_naviframe;
|
||||||
eo_prefix: elm_obj_naviframe;
|
eo_prefix: elm_obj_naviframe;
|
||||||
|
@ -145,6 +145,7 @@ class Elm.Naviframe (Elm.Layout, Elm.Interface.Atspi_Widget_Action)
|
||||||
Efl.Canvas.Group.group_del;
|
Efl.Canvas.Group.group_del;
|
||||||
Efl.Canvas.Group.group_show;
|
Efl.Canvas.Group.group_show;
|
||||||
Efl.Canvas.Group.group_add;
|
Efl.Canvas.Group.group_add;
|
||||||
|
Edje.Object.signal_emit;
|
||||||
Elm.Widget.focus_direction;
|
Elm.Widget.focus_direction;
|
||||||
Elm.Widget.focus_next_manager_is;
|
Elm.Widget.focus_next_manager_is;
|
||||||
Elm.Widget.focus_direction_manager_is;
|
Elm.Widget.focus_direction_manager_is;
|
||||||
|
@ -155,7 +156,6 @@ class Elm.Naviframe (Elm.Layout, Elm.Interface.Atspi_Widget_Action)
|
||||||
Elm.Widget.event;
|
Elm.Widget.event;
|
||||||
Elm.Layout.text.set;
|
Elm.Layout.text.set;
|
||||||
Elm.Layout.text.get;
|
Elm.Layout.text.get;
|
||||||
Elm.Layout.signal_emit;
|
|
||||||
Elm.Layout.sizing_eval;
|
Elm.Layout.sizing_eval;
|
||||||
Elm.Interface.Atspi_Widget_Action.elm_actions.get;
|
Elm.Interface.Atspi_Widget_Action.elm_actions.get;
|
||||||
Efl.Part.part;
|
Efl.Part.part;
|
||||||
|
|
|
@ -23,7 +23,7 @@ enum Elm.Popup.Orient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class Elm.Popup (Elm.Layout, Elm.Interface.Atspi_Widget_Action)
|
class Elm.Popup (Elm.Layout, Elm.Interface.Atspi_Widget_Action, Edje.Object)
|
||||||
{
|
{
|
||||||
legacy_prefix: elm_popup;
|
legacy_prefix: elm_popup;
|
||||||
eo_prefix: elm_obj_popup;
|
eo_prefix: elm_obj_popup;
|
||||||
|
@ -169,6 +169,7 @@ class Elm.Popup (Elm.Layout, Elm.Interface.Atspi_Widget_Action)
|
||||||
Eo.Base.constructor;
|
Eo.Base.constructor;
|
||||||
Efl.Canvas.Group.group_del;
|
Efl.Canvas.Group.group_del;
|
||||||
Efl.Canvas.Group.group_add;
|
Efl.Canvas.Group.group_add;
|
||||||
|
Edje.Object.signal_emit;
|
||||||
Elm.Widget.focus_direction;
|
Elm.Widget.focus_direction;
|
||||||
Elm.Widget.focus_next_manager_is;
|
Elm.Widget.focus_next_manager_is;
|
||||||
Elm.Widget.theme_apply;
|
Elm.Widget.theme_apply;
|
||||||
|
@ -182,7 +183,6 @@ class Elm.Popup (Elm.Layout, Elm.Interface.Atspi_Widget_Action)
|
||||||
Elm.Layout.text.set;
|
Elm.Layout.text.set;
|
||||||
Elm.Layout.text.get;
|
Elm.Layout.text.get;
|
||||||
Elm.Layout.sizing_eval;
|
Elm.Layout.sizing_eval;
|
||||||
Elm.Layout.signal_emit;
|
|
||||||
Elm.Interface.Atspi_Widget_Action.elm_actions.get;
|
Elm.Interface.Atspi_Widget_Action.elm_actions.get;
|
||||||
Elm.Interface.Atspi_Accessible.state_set.get;
|
Elm.Interface.Atspi_Accessible.state_set.get;
|
||||||
Efl.Part.part;
|
Efl.Part.part;
|
||||||
|
|
|
@ -57,8 +57,39 @@ START_TEST(elm_layout_swallows)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(elm_layout_edje_attach)
|
||||||
|
{
|
||||||
|
char buf[PATH_MAX];
|
||||||
|
Evas_Object *win, *layout;
|
||||||
|
const Evas_Object *part;
|
||||||
|
int r, g, b, a;
|
||||||
|
|
||||||
|
elm_init(1, NULL);
|
||||||
|
win = elm_win_add(NULL, "layout", ELM_WIN_BASIC);
|
||||||
|
|
||||||
|
layout = eo_add(ELM_LAYOUT_CLASS, win);
|
||||||
|
snprintf(buf, sizeof(buf), "%s/objects/test.edj", ELM_TEST_DATA_DIR);
|
||||||
|
edje_object_file_set(layout, buf, "layout_edje");
|
||||||
|
evas_object_show(layout);
|
||||||
|
|
||||||
|
edje_object_color_class_set(layout, "red", 255, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||||
|
part = edje_object_part_object_get(layout, "red");
|
||||||
|
evas_object_color_get(part, &r, &g, &b, &a);
|
||||||
|
fail_if((r != 255) || (g != 0) || (b != 0) || (a != 255));
|
||||||
|
|
||||||
|
edje_object_signal_emit(layout, "change", "test");
|
||||||
|
edje_object_message_signal_process(layout);
|
||||||
|
part = edje_object_part_object_get(layout, "blue");
|
||||||
|
evas_object_color_get(part, &r, &g, &b, &a);
|
||||||
|
fail_if((r != 0) || (g != 0) || (b != 255) || (a != 255));
|
||||||
|
|
||||||
|
elm_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
void elm_test_layout(TCase *tc)
|
void elm_test_layout(TCase *tc)
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, elm_atspi_role_get);
|
tcase_add_test(tc, elm_atspi_role_get);
|
||||||
tcase_add_test(tc, elm_layout_swallows);
|
tcase_add_test(tc, elm_layout_swallows);
|
||||||
|
tcase_add_test(tc, elm_layout_edje_attach);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue