path: root/src/lib/evas/include/evas_private.h
diff options
authorCarsten Haitzler (Rasterman) <>2016-10-28 08:17:11 +0900
committerCarsten Haitzler (Rasterman) <>2016-10-28 08:21:50 +0900
commitb533f15880c7d51c3bdb499202dca858cf5b037a (patch)
tree5399f452ab0969167546431440b5be6b3fc66fdd /src/lib/evas/include/evas_private.h
parent51eafa137d373cb3e9055c180e6862c8e5bd21d4 (diff)
evas - fix smart clipped if a move happens to recurse within itself
so since this uses new pos - cur pos to move BY x pixels... there is an issue that if the move of the obj ends up re-moving the current obj TO the same pos. it moved BY the same delta again thus racing ahead. not great. because x/y is not stored until the call stack returns to after the smart move func and the pos set storce the new position in the object struct. the easiest way atm until we have relative positioning etc. is to store this in the smart obj and use the delta at that time of the call then store it immediately so a recursion ends up with a delta of 0 if its the same pos, so go back to where we were. this fixes a nasty issue i spotted in fileselector that made filesel icons race along when scrolling 2x as fast as everything else. oddly i couldnt see this in any other widget that scrolled when i looked... which is odd, but... either way a nasty issue... subtle... and now fixed. never saw this before so this seems new.
Diffstat (limited to 'src/lib/evas/include/evas_private.h')
1 files changed, 1 insertions, 0 deletions
diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h
index 6dc037b8af..6b0ff6862c 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -1601,6 +1601,7 @@ void evas_object_smart_member_stack_above(Evas_Object *member, Evas_Object *othe
1601void evas_object_smart_member_stack_below(Evas_Object *member, Evas_Object *other); 1601void evas_object_smart_member_stack_below(Evas_Object *member, Evas_Object *other);
1602const Eina_Inlist *evas_object_smart_members_get_direct(const Evas_Object *obj); 1602const Eina_Inlist *evas_object_smart_members_get_direct(const Evas_Object *obj);
1603void _efl_canvas_group_group_members_all_del(Evas_Object *obj); 1603void _efl_canvas_group_group_members_all_del(Evas_Object *obj);
1604void _evas_object_smart_xy_update(Eo *eo_obj, Evas_Coord *px, Evas_Coord *py, Evas_Coord x, Evas_Coord y);
1604void evas_call_smarts_calculate(Evas *e); 1605void evas_call_smarts_calculate(Evas *e);
1605void evas_object_smart_bounding_box_update(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 1606void evas_object_smart_bounding_box_update(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
1606void evas_object_smart_need_bounding_box_update(Evas_Object *eo_obj, Evas_Smart_Data *o, Evas_Object_Protected_Data *obj); 1607void evas_object_smart_need_bounding_box_update(Evas_Object *eo_obj, Evas_Smart_Data *o, Evas_Object_Protected_Data *obj);