From de313d6296ac8a2d9a3c0f9762179ffd42a833ff Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Mon, 5 Jun 2017 14:09:42 -0700 Subject: [PATCH] scroller : fix mirrored contents_pos_set call Summary: Fixes that a scroller can not be moved normally even if it is changed to mirrored. In elm_scroller, _mirrored_set is called when sizing_eval is called. because When content size is changed, it should be scrolled based on mirrored coordinates. Also In elm_interface_scrollable, elm_interface_scrollable_content_pos_set of _elm_scrollable_mirrored_set to be called regardless of mirrored state. Test Plan: scroller test on elementary_test. Reviewers: raster, woohyun, SanghyeonLee, akanad, eagleeye, cedric, singh.amitesh, eunue Subscribers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D4908 Signed-off-by: Cedric BAIL --- src/lib/elementary/elm_interface_scrollable.c | 14 +++++++------- src/lib/elementary/elm_scroller.c | 16 ++++++++-------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/lib/elementary/elm_interface_scrollable.c b/src/lib/elementary/elm_interface_scrollable.c index f008d0b..5f9bf67 100644 --- a/src/lib/elementary/elm_interface_scrollable.c +++ b/src/lib/elementary/elm_interface_scrollable.c @@ -1675,22 +1675,22 @@ _elm_interface_scrollable_mirrored_set(Eo *obj EINA_UNUSED, Elm_Scrollable_Smart { Evas_Coord wx; - if (!sid->edje_obj) return; + if (!sid->edje_obj || !sid->pan_obj) return; mirrored = !!mirrored; - if (sid->is_mirrored == mirrored) - return; - - sid->is_mirrored = mirrored; - edje_object_mirrored_set(sid->edje_obj, mirrored); - if (sid->is_mirrored) wx = _elm_scroll_x_mirrored_get(sid->obj, sid->wx); else wx = sid->wx; elm_interface_scrollable_content_pos_set(sid->obj, wx, sid->wy, EINA_FALSE); + + if (sid->is_mirrored == mirrored) + return; + + sid->is_mirrored = mirrored; + edje_object_mirrored_set(sid->edje_obj, mirrored); } /* returns TRUE when we need to move the scroller, FALSE otherwise. diff --git a/src/lib/elementary/elm_scroller.c b/src/lib/elementary/elm_scroller.c index 4cf261c..602b3d5 100644 --- a/src/lib/elementary/elm_scroller.c +++ b/src/lib/elementary/elm_scroller.c @@ -329,6 +329,13 @@ _elm_scroller_elm_widget_activate(Eo *obj, Elm_Scroller_Data *_pd EINA_UNUSED, E return EINA_TRUE; } +static void +_mirrored_set(Evas_Object *obj, + Eina_Bool mirrored) +{ + elm_interface_scrollable_mirrored_set(obj, mirrored); +} + EOLIAN static void _elm_scroller_elm_layout_sizing_eval(Eo *obj, Elm_Scroller_Data *sd) { @@ -394,13 +401,8 @@ _elm_scroller_elm_layout_sizing_eval(Eo *obj, Elm_Scroller_Data *sd) if ((maxh > 0) && (h > maxh)) h = maxh; evas_object_size_hint_min_set(obj, w, h); -} -static void -_mirrored_set(Evas_Object *obj, - Eina_Bool mirrored) -{ - elm_interface_scrollable_mirrored_set(obj, mirrored); + _mirrored_set(obj, elm_widget_mirrored_get(obj)); } EOLIAN static Elm_Theme_Apply @@ -410,8 +412,6 @@ _elm_scroller_elm_widget_theme_apply(Eo *obj, Elm_Scroller_Data *sd EINA_UNUSED) int_ret = elm_obj_widget_theme_apply(efl_super(obj, MY_CLASS)); if (!int_ret) return ELM_THEME_APPLY_FAILED; - _mirrored_set(obj, elm_widget_mirrored_get(obj)); - elm_layout_sizing_eval(obj); return int_ret; -- 2.7.4