On Fri, 28 Oct 2016 09:04:04 +0200 "Jean Guyomarc'h" <[email protected]> said:
> I cannot really test right now, but this might fix this: > https://phab.enlightenment.org/T4686. > If so, much thanks :) > Jean well it fixes the animated gif issue :) > On Fri, Oct 28, 2016 at 1:46 AM, Carsten Haitzler <[email protected]> > wrote: > > raster pushed a commit to branch master. > > > > http://git.enlightenment.org/core/efl.git/commit/?id=b533f15880c7d51c3bdb499202dca858cf5b037a > > > > commit b533f15880c7d51c3bdb499202dca858cf5b037a > > Author: Carsten Haitzler (Rasterman) <[email protected]> > > Date: Fri Oct 28 08:17:11 2016 +0900 > > > > 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. > > --- > > src/lib/evas/canvas/evas_object_smart.c | 13 +++++++++++++ > > src/lib/evas/canvas/evas_object_smart_clipped.c | 2 +- > > src/lib/evas/include/evas_private.h | 1 + > > 3 files changed, 15 insertions(+), 1 deletion(-) > > > > diff --git a/src/lib/evas/canvas/evas_object_smart.c > > b/src/lib/evas/canvas/evas_object_smart.c index 359fee1..205d494 100644 > > --- a/src/lib/evas/canvas/evas_object_smart.c > > +++ b/src/lib/evas/canvas/evas_object_smart.c > > @@ -36,6 +36,8 @@ struct _Evas_Smart_Data > > > > Evas_Smart_Cb_Description_Array callbacks_descriptions; > > > > + Evas_Coord x, y; > > + > > int walking_list; > > int member_count; /** number of smart member objects */ > > > > @@ -913,6 +915,17 @@ _evas_canvas_smart_objects_calculate_count_get(Eo > > *eo_e EINA_UNUSED, Evas_Public return e->smart_calc_count; > > } > > > > +void > > +_evas_object_smart_xy_update(Eo *eo_obj, Evas_Coord *px, Evas_Coord *py, > > + Evas_Coord x, Evas_Coord y) > > +{ > > + EVAS_OBJECT_SMART_GET_OR_RETURN(eo_obj); > > + *px = o->x; > > + *py = o->y; > > + o->x = x; > > + o->y = y; > > +} > > + > > /** > > * Call calculate() on all smart objects that need_recalculate. > > * > > diff --git a/src/lib/evas/canvas/evas_object_smart_clipped.c > > b/src/lib/evas/canvas/evas_object_smart_clipped.c index f9f95dd..8cbc5c5 > > 100644 > > --- a/src/lib/evas/canvas/evas_object_smart_clipped.c > > +++ b/src/lib/evas/canvas/evas_object_smart_clipped.c > > @@ -86,7 +86,7 @@ evas_object_smart_clipped_smart_move(Evas_Object *eo_obj, > > Evas_Coord x, Evas_Coo { > > Evas_Coord orig_x, orig_y; > > > > - efl_gfx_position_get(eo_obj, &orig_x, &orig_y); > > + _evas_object_smart_xy_update(eo_obj, &orig_x, &orig_y, x, y); > > evas_object_smart_move_children_relative(eo_obj, x - orig_x, y - > > orig_y); } > > > > diff --git a/src/lib/evas/include/evas_private.h > > b/src/lib/evas/include/evas_private.h index 6dc037b..6b0ff68 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 void evas_object_smart_member_stack_below > > (Evas_Object *member, Evas_Object *other); const Eina_Inlist > > *evas_object_smart_members_get_direct(const Evas_Object *obj); void > > _efl_canvas_group_group_members_all_del(Evas_Object *obj); +void > > _evas_object_smart_xy_update(Eo *eo_obj, Evas_Coord *px, Evas_Coord *py, > > Evas_Coord x, Evas_Coord y); void evas_call_smarts_calculate(Evas *e); void > > evas_object_smart_bounding_box_update(Evas_Object *eo_obj, > > Evas_Object_Protected_Data *obj); void > > evas_object_smart_need_bounding_box_update(Evas_Object *eo_obj, > > Evas_Smart_Data *o, Evas_Object_Protected_Data *obj); > > > > -- > > > > > > ------------------------------------------------------------------------------ > The Command Line: Reinvented for Modern Developers > Did the resurgence of CLI tooling catch you by surprise? > Reconnect with the command line and become more productive. > Learn the new .NET and ASP.NET CLI. Get your free copy! > http://sdm.link/telerik > _______________________________________________ > enlightenment-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) [email protected] ------------------------------------------------------------------------------ The Command Line: Reinvented for Modern Developers Did the resurgence of CLI tooling catch you by surprise? Reconnect with the command line and become more productive. Learn the new .NET and ASP.NET CLI. Get your free copy! http://sdm.link/telerik _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
