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.
This commit is contained in:
Jean-Philippe Andre 2017-05-30 13:52:22 +09:00
parent bac435a49e
commit 63518c4c2c
7 changed files with 14 additions and 5 deletions

View File

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

View File

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

View File

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

View File

@ -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 */

View File

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

View File

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

View File

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