Evas: Move object static_clip to legacy
authorJean-Philippe Andre <jp.andre@samsung.com>
Thu, 16 Jun 2016 07:20:25 +0000 (16:20 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Fri, 17 Jun 2016 02:37:39 +0000 (11:37 +0900)
This is a horrible API used for internal optimizations. Which
may or may not be partly broken anyway.

We can do better, in the future. Let's not expose this kind
of API.

src/lib/evas/Evas_Legacy.h
src/lib/evas/canvas/evas_object.eo
src/lib/evas/canvas/evas_object_main.c
src/lib/evas/include/evas_private.h

index a929644..947dbc9 100644 (file)
@@ -1366,6 +1366,30 @@ EAPI void evas_object_stack_above(Evas_Object *obj, Evas_Object *above) EINA_ARG
  */
 EAPI void evas_object_lower(Evas_Object *obj);
 
+/**
+ * @brief Set a hint flag on the given Evas object that it's used as a "static
+ * clipper".
+ *
+ * This is a hint to Evas that this object is used as a big static clipper and
+ * shouldn't be moved with children and otherwise considered specially. The
+ * default value for new objects is @c false.
+ *
+ * @param[in] is_static_clip @c true if it's to be used as a static clipper,
+ * @c false otherwise.
+ *
+ * @ingroup Evas_Object
+ */
+EAPI void evas_object_static_clip_set(Evas_Object *obj, Eina_Bool is_static_clip);
+
+/**
+ * @brief Get the "static clipper" hint flag for a given Evas object.
+ *
+ * @return @c true if it's to be used as a static clipper, @c false otherwise.
+ *
+ * @ingroup Evas_Object
+ */
+EAPI Eina_Bool evas_object_static_clip_get(const Evas_Object *obj);
+
 #include "canvas/evas_common_interface.eo.legacy.h"
 #include "canvas/evas_object.eo.legacy.h"
 
index 8c6555d..bce44da 100644 (file)
@@ -296,25 +296,6 @@ abstract Evas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx, Efl.Gfx.Stack,
                              default size.]]
          }
       }
-      @property static_clip {
-         set {
-            [[Set a hint flag on the given Evas object that it's used as a
-              "static clipper".
-
-              This is a hint to Evas that this object is used as a big
-              static clipper and shouldn't be moved with children and
-              otherwise considered specially. The default value for new
-              objects is $false.
-            ]]
-         }
-         get {
-            [[Get the "static clipper" hint flag for a given Evas object.]]
-         }
-         values {
-            is_static_clip: bool; [[$true if it's to be used as a static
-                                    clipper, $false otherwise.]]
-         }
-      }
       @property focus {
          set {
             [[Sets or unsets a given object as the currently focused one on
index b9ae7da..8058398 100644 (file)
@@ -1778,7 +1778,7 @@ _evas_object_eo_base_dbg_info_get(Eo *eo_obj, Evas_Object_Protected_Data *obj EI
 
    visible = efl_gfx_visible_get(eo_obj);
    layer = efl_gfx_stack_layer_get(eo_obj);
-   name = evas_obj_name_get(eo_obj);
+   name = eo_name_get(eo_obj); // evas_object_name_get(eo_obj);
    efl_gfx_position_get(eo_obj, &x, &y);
    efl_gfx_size_get(eo_obj, &w, &h);
    scale = evas_obj_scale_get(eo_obj);
@@ -2095,19 +2095,6 @@ _evas_object_precise_is_inside_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected
    return obj->precise_is_inside;
 }
 
-EOLIAN static void
-_evas_object_static_clip_set(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Eina_Bool is_static_clip)
-{
-   evas_object_async_block(obj);
-   obj->is_static_clip = is_static_clip;
-}
-
-EOLIAN static Eina_Bool
-_evas_object_static_clip_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj)
-{
-   return obj->is_static_clip;
-}
-
 static void
 _is_frame_flag_set(Evas_Object_Protected_Data *obj, Eina_Bool is_frame)
 {
@@ -2190,13 +2177,27 @@ _evas_object_legacy_ctor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
 EAPI const char *
 evas_object_type_get(const Evas_Object *eo_obj)
 {
-   Evas_Object_Protected_Data *obj = eo_isa(eo_obj, EVAS_OBJECT_CLASS) ?
-            eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS) : NULL;
-   if (!obj || obj->delete_me) return "";
+   Evas_Object_Protected_Data *obj = EVAS_OBJ_GET_OR_RETURN(eo_obj, NULL);
+   if (obj->delete_me) return "";
    return obj->type;
 }
 
 EAPI void
+evas_object_static_clip_set(Evas_Object *eo_obj, Eina_Bool is_static_clip)
+{
+   Evas_Object_Protected_Data *obj = EVAS_OBJ_GET_OR_RETURN(eo_obj);
+   evas_object_async_block(obj);
+   obj->is_static_clip = is_static_clip;
+}
+
+EAPI Eina_Bool
+evas_object_static_clip_get(const Evas_Object *eo_obj)
+{
+   Evas_Object_Protected_Data *obj = EVAS_OBJ_GET_OR_RETURN(eo_obj, EINA_FALSE);
+   return obj->is_static_clip;
+}
+
+EAPI void
 evas_object_size_hint_aspect_set(Evas_Object *obj, Evas_Aspect_Control aspect, Evas_Coord w, Evas_Coord h)
 {
    efl_gfx_size_hint_aspect_set(obj, aspect, w, h);
index 7c9b726..0262699 100644 (file)
@@ -585,6 +585,13 @@ MAGIC_CHECK_FAILED(o, t, m)
 # define MAGIC_CHECK_END() }}
 #endif
 
+// helper function for legacy EAPI implementations
+#define EVAS_OBJ_GET_OR_RETURN(o, ...) ({ \
+   Evas_Object_Protected_Data *_obj = eo_isa(eo_obj, EVAS_OBJECT_CLASS) ? \
+     eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS) : NULL; \
+   if (!_obj) { MAGIC_CHECK_FAILED(o,0,0) return __VA_ARGS__; } \
+   _obj; })
+
 #define NEW_RECT(_r, _x, _y, _w, _h) (_r) = eina_rectangle_new(_x, _y, _w, _h);
 
 #define MERR_NONE() _evas_alloc_error = EVAS_ALLOC_ERROR_NONE