aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2017-03-13 23:34:22 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2017-03-14 14:04:39 +0900
commit7072fbc2bfe25881c1ba76bb5be0a6a01cea4539 (patch)
tree781ded4addb09ef45cec1ea84a9999cd08249cb3
parentgenlist: Make sure only one item is decorated (diff)
downloadefl-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 https://phab.enlightenment.org/T1551 @fix
-rw-r--r--src/lib/edje/edje_util.c9
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,