scroller : fix mirrored contents_pos_set call
authorJunsuChoi <jsuya.choi@samsung.com>
Mon, 5 Jun 2017 21:09:42 +0000 (14:09 -0700)
committerCedric BAIL <cedric@osg.samsung.com>
Mon, 5 Jun 2017 21:19:34 +0000 (14:19 -0700)
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 <cedric@osg.samsung.com>
src/lib/elementary/elm_interface_scrollable.c
src/lib/elementary/elm_scroller.c

index f008d0b..5f9bf67 100644 (file)
@@ -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.
index 4cf261c..602b3d5 100644 (file)
@@ -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;