edje: Implement part proxy for all parts
authorJean-Philippe Andre <jp.andre@samsung.com>
Tue, 30 May 2017 04:52:22 +0000 (13:52 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Tue, 30 May 2017 04:54:35 +0000 (13:54 +0900)
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.

src/lib/edje/edje_part.c
src/lib/edje/edje_part_box.c
src/lib/edje/edje_part_helper.h
src/lib/edje/edje_part_swallow.c
src/lib/edje/edje_part_table.c
src/lib/edje/edje_private.h
src/lib/edje/edje_util.c

index c5d2eed..b4049ed 100644 (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
index b70d3a7..f2ae4b6 100644 (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;
index 6e1b4db..4ae1ae0 100644 (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); \
index 6a94ca7..a85fdb9 100644 (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 */
index 30cf56e..c1bc0b4 100644 (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;
index 347873a..79dddb5 100644 (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);
index 6345457..847fa61 100644 (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