From 7b07b03c21a2639feb0435999ad276e1f3514c1f Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 26 Feb 2016 15:03:22 -0500 Subject: [PATCH] track/manage size hints for zoomap child objects this enables the use of zoomaps for elm objects --- src/bin/e_zoomap.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/bin/e_zoomap.c b/src/bin/e_zoomap.c index 682412fc6..6ed511b15 100644 --- a/src/bin/e_zoomap.c +++ b/src/bin/e_zoomap.c @@ -32,6 +32,17 @@ static void _e_zoomap_smart_clip_set(Evas_Object *obj, Evas_Object *clip); static void _e_zoomap_smart_clip_unset(Evas_Object *obj); static void _e_zoomap_smart_init(void); +static void +_e_zoomap_smart_child_hints(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) +{ + E_Smart_Data *sd = data; + int w, h; + + evas_object_size_hint_min_get(obj, &w, &h); + evas_object_size_hint_min_set(sd->smart_obj, w, h); + evas_object_resize(sd->smart_obj, w, h); +} + /* local subsystem globals */ static Evas_Smart *_e_smart = NULL; @@ -58,6 +69,8 @@ e_zoomap_child_set(Evas_Object *obj, Evas_Object *child) _e_zoomap_smart_child_del_hook); evas_object_event_callback_del(sd->child_obj, EVAS_CALLBACK_RESIZE, _e_zoomap_smart_child_resize_hook); + evas_object_event_callback_del(child, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _e_zoomap_smart_child_hints); sd->child_obj = NULL; } if (child) @@ -70,6 +83,8 @@ e_zoomap_child_set(Evas_Object *obj, Evas_Object *child) &sd->child_w, &sd->child_h); evas_object_event_callback_add(child, EVAS_CALLBACK_DEL, _e_zoomap_smart_child_del_hook, sd); + evas_object_event_callback_add(child, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _e_zoomap_smart_child_hints, sd); evas_object_event_callback_add(child, EVAS_CALLBACK_RESIZE, _e_zoomap_smart_child_resize_hook, sd); if (evas_object_visible_get(obj)) evas_object_show(sd->child_obj); @@ -275,6 +290,8 @@ _e_zoomap_smart_del(Evas_Object *obj) _e_zoomap_smart_child_del_hook); evas_object_event_callback_del(o, EVAS_CALLBACK_RESIZE, _e_zoomap_smart_child_resize_hook); + evas_object_event_callback_del(o, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _e_zoomap_smart_child_hints); evas_object_del(o); } E_FREE(sd);