summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2016-10-13 17:59:13 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2016-10-14 14:06:43 +0900
commit577fa188f5b338dedddb8fef66323155178c4528 (patch)
treedd1e7e1deff3bdd2a204dbcd12054341ea6a8b58
parent3920950985f92a636a6488a5991a42309b2f32fb (diff)
downloadefl-577fa188f5b338dedddb8fef66323155178c4528.tar.gz
evas: Fix evas_object_smart_clipped_clipper_get
This was broken for smart objects that are not "clipped smart objects". This fixes the example evas_smart_object. NOTE: This EAPI was removed in efl-1.18! /!\ This was an uncaught API break between 1.17 and 1.18 /!\ @fix
-rw-r--r--src/lib/evas/Evas_Legacy.h10
-rw-r--r--src/lib/evas/canvas/evas_object_smart_clipped.c13
2 files changed, 15 insertions, 8 deletions
diff --git a/src/lib/evas/Evas_Legacy.h b/src/lib/evas/Evas_Legacy.h
index 1962953bf8..8dc8fbf26b 100644
--- a/src/lib/evas/Evas_Legacy.h
+++ b/src/lib/evas/Evas_Legacy.h
@@ -5223,6 +5223,16 @@ EAPI void evas_object_smart_data_set(Evas_Object *obj, void *data);
EAPI void *evas_object_smart_data_get(const Evas_Object *obj);
/**
+ * @brief Get the clipper object for the given clipped smart object.
+ *
+ * Use this function if you want to change any of this clipper's properties,
+ * like colors.
+ *
+ * @ingroup Evas_Object_Smart
+ */
+EAPI Evas_Object *evas_object_smart_clipped_clipper_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT;
+
+/**
* @brief Retrieves the list of the member objects of a given Evas smart
* object.
*
diff --git a/src/lib/evas/canvas/evas_object_smart_clipped.c b/src/lib/evas/canvas/evas_object_smart_clipped.c
index a43a36a095..44d1fbe165 100644
--- a/src/lib/evas/canvas/evas_object_smart_clipped.c
+++ b/src/lib/evas/canvas/evas_object_smart_clipped.c
@@ -8,9 +8,9 @@
eo_data_scope_get(eo_obj, MY_CLASS) : \
evas_object_smart_data_get(eo_obj));
-#define CSO_DATA_GET_OR_RETURN(eo_obj, ptr) \
- CSO_DATA_GET(eo_obj, ptr) \
- if (!ptr) return;
+#define CSO_DATA_GET_OR_RETURN(eo_obj, ptr, ...) \
+ CSO_DATA_GET(eo_obj, ptr) \
+ if (!ptr) return __VA_ARGS__;
EOLIAN void
_efl_canvas_group_group_children_move(Eo *eo_obj, Evas_Object_Protected_Data *obj EINA_UNUSED, Evas_Coord dx, Evas_Coord dy)
@@ -38,12 +38,9 @@ _efl_canvas_group_group_children_move(Eo *eo_obj, Evas_Object_Protected_Data *ob
EAPI Evas_Object *
evas_object_smart_clipped_clipper_get(const Evas_Object *eo_obj)
{
- Evas_Object_Smart_Clipped_Data *obj;
+ CSO_DATA_GET_OR_RETURN(eo_obj, cso, NULL);
- if (!eo_isa(eo_obj, EFL_CANVAS_GROUP_CLIPPED_CLASS))
- return NULL;
- obj = eo_data_scope_get(eo_obj, EFL_CANVAS_GROUP_CLIPPED_CLASS);
- return obj->clipper;
+ return cso->clipper;
}
static void