From ad1b8f224f3dd189d6129da9c43c13a6810949c6 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 2 Nov 2016 11:16:57 -0400 Subject: [PATCH] force gadget site recalc from style object if gadget's hints change ensure that these intermediate objects trigger recalcs as expected fix T4809 --- src/bin/e_gadget.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c index 4f0c378ec..54b36ae92 100644 --- a/src/bin/e_gadget.c +++ b/src/bin/e_gadget.c @@ -1488,6 +1488,13 @@ e_gadget_type_iterator_get(void) return gadget_types ? eina_hash_iterator_key_new(gadget_types) : NULL; } +static void +_gadget_style_hints(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + E_Gadget_Config *zgc = data; + evas_object_smart_need_recalculate_set(zgc->site->layout, 1); +} + E_API Evas_Object * e_gadget_util_layout_style_init(Evas_Object *g, Evas_Object *style) { @@ -1522,6 +1529,7 @@ e_gadget_util_layout_style_init(Evas_Object *g, Evas_Object *style) elm_box_unpack(zgc->site->layout, prev); } evas_object_raise(zgc->site->events); + evas_object_event_callback_del(prev, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _gadget_style_hints); if (!style) return prev; evas_object_data_set(style, "__e_gadget", zgc); @@ -1529,6 +1537,7 @@ e_gadget_util_layout_style_init(Evas_Object *g, Evas_Object *style) elm_layout_sizing_eval(style); evas_object_smart_calculate(style); evas_object_size_hint_min_get(style, &zgc->style.minw, &zgc->style.minh); + evas_object_event_callback_add(style, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _gadget_style_hints, zgc); evas_object_show(style); evas_object_smart_callback_add(zgc->display, "gadget_popup", _gadget_popup, zgc->site); return prev;