From: Wonki Kim Date: Wed, 16 Aug 2017 11:52:26 +0000 (+0900) Subject: Fix 'scrollto animator' reaching destination X-Git-Tag: submit/tizen_3.0/20170825.055425~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=725f57521ebe7a623166ccf9850cbdccd63fb76b;p=platform%2Fupstream%2Felementary.git Fix 'scrollto animator' reaching destination Scrollto animator could never reach destination if animator is generated while animator is running because animation duration is fixed. This patch reduces animation duration on the above situation. @tizen_fix Change-Id: Id4b3588814c038750e40edefb18a46607db694ec Signed-off-by: Wonki Kim --- diff --git a/src/lib/elm_interface_scrollable.c b/src/lib/elm_interface_scrollable.c index 81ad53167..d7676dd39 100644 --- a/src/lib/elm_interface_scrollable.c +++ b/src/lib/elm_interface_scrollable.c @@ -2608,11 +2608,19 @@ _elm_scroll_scroll_to_y(Elm_Scrollable_Smart_Interface_Data *sid, return; } t = ecore_loop_time_get(); + //TIZEN_ONLY(20170816) Fix 'scrollto animator' reaching destination + if ((sid->scrollto.y.t_end > t) && (sid->scrollto.y.end == pos_y)) + sid->scrollto.y.cancel++; + else + sid->scrollto.y.cancel = 1; + //END eo_do(sid->pan_obj, elm_obj_pan_pos_get(&px, &py)); sid->scrollto.y.start = py; sid->scrollto.y.end = pos_y; sid->scrollto.y.t_start = t; - sid->scrollto.y.t_end = t + t_in; + //TIZEN_ONLY(20170816) Fix 'scrollto animator' reaching destination + sid->scrollto.y.t_end = t + t_in/(double)sid->scrollto.y.cancel; + //END if (!sid->scrollto.y.animator) { sid->scrollto.y.animator = @@ -2655,11 +2663,19 @@ _elm_scroll_scroll_to_x(Elm_Scrollable_Smart_Interface_Data *sid, return; } t = ecore_loop_time_get(); + //TIZEN_ONLY(20170816) Fix 'scrollto animator' reaching destination + if ((sid->scrollto.x.t_end > t) && (sid->scrollto.x.end == pos_x)) + sid->scrollto.x.cancel++; + else + sid->scrollto.x.cancel = 1; + //END eo_do(sid->pan_obj, elm_obj_pan_pos_get(&px, &py)); sid->scrollto.x.start = px; sid->scrollto.x.end = pos_x; sid->scrollto.x.t_start = t; - sid->scrollto.x.t_end = t + t_in; + //TIZEN_ONLY(20170816) Fix 'scrollto animator' reaching destination + sid->scrollto.x.t_end = t + t_in/(double)sid->scrollto.x.cancel; + //END if (!sid->scrollto.x.animator) { sid->scrollto.x.animator = @@ -5329,6 +5345,11 @@ _elm_interface_scrollable_evas_object_smart_add(Eo *obj, Elm_Scrollable_Smart_In sid->bounce_animator_disabled = EINA_FALSE; sid->block = ELM_SCROLLER_MOVEMENT_NO_BLOCK; + //TIZEN_ONLY(20170816) Fix 'scrollto animator' reaching destination + sid->scrollto.x.cancel = 1; + sid->scrollto.y.cancel = 1; + //END + _elm_scroll_scroll_bar_reset(sid); eo_do_super(obj, MY_SCROLLABLE_INTERFACE, evas_obj_smart_add()); diff --git a/src/lib/elm_interface_scrollable.h b/src/lib/elm_interface_scrollable.h index b8e77b359..6e2e19829 100644 --- a/src/lib/elm_interface_scrollable.h +++ b/src/lib/elm_interface_scrollable.h @@ -213,6 +213,9 @@ struct _Elm_Scrollable_Smart_Interface_Data { Evas_Coord start, end; double t_start, t_end; + //TIZEN_ONLY(20170816) Fix 'scrollto animator' reaching destination + int cancel; + //END Ecore_Animator *animator; } x, y; } scrollto;