diff options
author | Jean-Philippe Andre <jp.andre@samsung.com> | 2017-03-13 23:34:22 +0900 |
---|---|---|
committer | Jean-Philippe Andre <jp.andre@samsung.com> | 2017-03-14 14:04:39 +0900 |
commit | 7072fbc2bfe25881c1ba76bb5be0a6a01cea4539 (patch) | |
tree | 781ded4addb09ef45cec1ea84a9999cd08249cb3 | |
parent | 635b4ad8f3a2e131e681a05d673a6a577c95fcbe (diff) | |
download | efl-7072fbc2bfe25881c1ba76bb5be0a6a01cea4539.tar.gz |
edje: Fix rare issue with map
In the following sequence, the swallowed object map property is
never reset as it should have been:
- swallow object
- start program, change state to have a map
- do something
- start program, change state to have no map
but before render, unswallow the object
At this point, the object will never be un-mapped. This is weird.
Somehow edje_calc avoids calling evas_object_map_[enable_]_set
excessively, but I believe the issue is that the object does not
need recalc. Its container needed recalc, not the child (which is
mapped). I'm not 100% sure.
Test case:
elementary_test -to "Genlist Decorate Item Mode"
Click on rotate, select a few items, scroll up and down. Enjoy.
Ref T1551
@fix
-rw-r--r-- | src/lib/edje/edje_util.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c index 158259eaf0..3ea970ce3c 100644 --- a/src/lib/edje/edje_util.c +++ b/src/lib/edje/edje_util.c @@ -6279,6 +6279,15 @@ _edje_real_part_swallow_clear(Edje *ed, Edje_Real_Part *rp) if ((rp->type != EDJE_RP_TYPE_SWALLOW) || (!rp->typedata.swallow)) return; if (!rp->typedata.swallow->swallowed_object) return; + if (rp->chosen_description->map.on || + (rp->invalidate +#ifdef HAVE_EPHYSICS + && rp->prev_description && rp->prev_description->map.on +#endif + )) + { + evas_object_map_enable_set(rp->typedata.swallow->swallowed_object, EINA_FALSE); + } _eo_unparent_helper(rp->typedata.swallow->swallowed_object, ed->obj); evas_object_smart_member_del(rp->typedata.swallow->swallowed_object); evas_object_event_callback_del_full(rp->typedata.swallow->swallowed_object, |