From: Jean-Philippe Andre Date: Tue, 30 May 2017 04:52:22 +0000 (+0900) Subject: edje: Implement part proxy for all parts X-Git-Tag: upstream/1.20.0~871 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=63518c4c2c8b08dcdd410b274d788c9dcb48a60a;p=platform%2Fupstream%2Fefl.git edje: Implement part proxy for all parts This is required for part_state_get, which is now based on the EO API internally. This fixes the test case introduced in the following commmit. --- diff --git a/src/lib/edje/edje_part.c b/src/lib/edje/edje_part.c index c5d2eed..b4049ed 100644 --- a/src/lib/edje/edje_part.c +++ b/src/lib/edje/edje_part.c @@ -2,10 +2,14 @@ #include "edje_part_helper.h" #define MY_CLASS EFL_CANVAS_LAYOUT_INTERNAL_CLASS +PROXY_IMPLEMENTATION(other, INTERNAL, EINA_FALSE) +#undef PROXY_IMPLEMENTATION + PROXY_INIT(box) PROXY_INIT(table) PROXY_INIT(swallow) PROXY_INIT(external) +PROXY_INIT(other) void _edje_internal_proxy_shutdown(void) @@ -14,6 +18,7 @@ _edje_internal_proxy_shutdown(void) _table_shutdown(); _swallow_shutdown(); _external_shutdown(); + _other_shutdown(); } void diff --git a/src/lib/edje/edje_part_box.c b/src/lib/edje/edje_part_box.c index b70d3a7..f2ae4b6 100644 --- a/src/lib/edje/edje_part_box.c +++ b/src/lib/edje/edje_part_box.c @@ -5,7 +5,7 @@ #include "../evas/canvas/evas_box.eo.h" -PROXY_IMPLEMENTATION(box, BOX, EINA_FALSE) +PROXY_IMPLEMENTATION(box, INTERNAL_BOX, EINA_FALSE) #undef PROXY_IMPLEMENTATION typedef struct _Part_Item_Iterator Part_Item_Iterator; diff --git a/src/lib/edje/edje_part_helper.h b/src/lib/edje/edje_part_helper.h index 6e1b4db..4ae1ae0 100644 --- a/src/lib/edje/edje_part_helper.h +++ b/src/lib/edje/edje_part_helper.h @@ -89,7 +89,7 @@ _edje_ ## type ## _internal_proxy_get(Edje_Object *obj EINA_UNUSED, Edje *ed, Ed ERR("Found invalid handle for efl_part. Reset."); \ _ ## type ## _proxy = NULL; \ } \ - proxy = efl_add(MY_CLASS, ed->obj, \ + proxy = efl_add(EFL_CANVAS_LAYOUT_##TYPE##_CLASS, ed->obj, \ _edje_real_part_set(efl_added, ed, rp, rp->part->name)); \ __VA_ARGS__; \ if (!no_del_cb) efl_del_intercept_set(proxy, _ ## type ## _del_cb); \ diff --git a/src/lib/edje/edje_part_swallow.c b/src/lib/edje/edje_part_swallow.c index 6a94ca7..a85fdb9 100644 --- a/src/lib/edje/edje_part_swallow.c +++ b/src/lib/edje/edje_part_swallow.c @@ -3,7 +3,7 @@ #include "efl_canvas_layout_internal_swallow.eo.h" #define MY_CLASS EFL_CANVAS_LAYOUT_INTERNAL_SWALLOW_CLASS -PROXY_IMPLEMENTATION(swallow, SWALLOW, EINA_FALSE) +PROXY_IMPLEMENTATION(swallow, INTERNAL_SWALLOW, EINA_FALSE) #undef PROXY_IMPLEMENTATION /* Swallow parts */ diff --git a/src/lib/edje/edje_part_table.c b/src/lib/edje/edje_part_table.c index 30cf56e..c1bc0b4 100644 --- a/src/lib/edje/edje_part_table.c +++ b/src/lib/edje/edje_part_table.c @@ -5,7 +5,7 @@ #include "../evas/canvas/evas_table.eo.h" -PROXY_IMPLEMENTATION(table, TABLE, EINA_FALSE) +PROXY_IMPLEMENTATION(table, INTERNAL_TABLE, EINA_FALSE) #undef PROXY_IMPLEMENTATION typedef struct _Part_Item_Iterator Part_Item_Iterator; diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h index 347873a..79dddb5 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h @@ -3095,6 +3095,9 @@ void _edje_real_part_ignore_flags_set(Edje *ed, Edje_Real_Part *rp, Evas_Event_F Evas_Event_Flags _edje_real_part_mask_flags_get(Edje *ed, Edje_Real_Part *rp); void _edje_real_part_mask_flags_set(Edje *ed, Edje_Real_Part *rp, Evas_Event_Flags mask_flags); +/* part proxy */ +Eo *_edje_other_internal_proxy_get(Edje_Object *obj, Edje *ed, Edje_Real_Part *rp); + /* part containers: box */ Eo *_edje_box_internal_proxy_get(Edje_Object *obj, Edje *ed, Edje_Real_Part *rp); Eina_Bool _edje_part_box_append(Edje *ed, const char *part, Evas_Object *child); diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c index 6345457..847fa61 100644 --- a/src/lib/edje/edje_util.c +++ b/src/lib/edje/edje_util.c @@ -3691,7 +3691,8 @@ _edje_object_efl_part_part(Eo *obj, Edje *ed, const char *part) return _edje_swallow_internal_proxy_get(obj, ed, rp); else if (rp->part->type == EDJE_PART_TYPE_EXTERNAL) return _edje_external_internal_proxy_get(obj, ed, rp); - else return NULL; /* FIXME/TODO: text & others (color, ...) */ + else + return _edje_other_internal_proxy_get(obj, ed, rp); } EOLIAN void