From 1bfd549a0839f2ddc5016d2971e6dfc0adb7a1c5 Mon Sep 17 00:00:00 2001 From: Jae Hwan Kim Date: Mon, 31 Jan 2011 10:00:49 +0000 Subject: [PATCH] From: Jae Hwan Kim Subject: [E-devel] [Patch] els_scroller - elm_smart_scroller_child_region_show I have some issue in scroller. Sometimes the scroller move to wrong region when the child get first focus. It use "scroller -> layout -> button". So I checked the code and found a suspected thing in elm_smart_scroller_child_region_show. Please refer following pictures. In the pictures, the rect which be written "x, y, w, h" is the area which be made with the parameters of "elm_smart_scroller_child_region_show". The rect which be written "Pan" is the pan area of the scroller. If the situation is 1) or 2) and the function is called, the result have to be 7). In case of 3) or 4), it have to be 8). In case of 5) or 6), it have to remain as it is. Is it right?? But if the situation is 6) and the function is called, the result will be 7) in current code. I think it is wrong. I attached patch code. please find it below the pictures. 1) --------------- | | | x, y, w, h | | | --------------- --------------------- | | | | | | | Pan | | | | | | | --------------------- 2) --------------- | | | x, y, w, h | --------------------- | | | | | --------------- | | | | Pan | | | | | | | --------------------- 3) --------------------- | | | | | | | Pan | | | | --------------- | | | | | --------------------- | x, y, w, h | | | --------------- 4) --------------------- | | | | | | | Pan | | | | | | | --------------------- --------------- | | | x, y, w, h | | | --------------- 5) --------------------- | | | --------------- | | | | | | | x, y, w, h | | | | | | | --------------- | | Pan | --------------------- 6) --------------- | | --------------------- <---Pan | | | | | | x, y, w, h | | | | | | --------------------- | | --------------- 7) --------------------- | | | | | | x, y, w, h | | | | | | | --------------- | | | | Pan | | | --------------------- 8) --------------------- | | | Pan | | | | --------------- | | | | | | | x, y, w, h | | | | | | --------------------- SVN revision: 56579 --- legacy/elementary/src/lib/els_scroller.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/legacy/elementary/src/lib/els_scroller.c b/legacy/elementary/src/lib/els_scroller.c index 85d002efd4..6a5a34dc7a 100644 --- a/legacy/elementary/src/lib/els_scroller.c +++ b/legacy/elementary/src/lib/els_scroller.c @@ -1213,19 +1213,11 @@ elm_smart_scroller_region_bring_in(Evas_Object *obj, Evas_Coord x, Evas_Coord y, sd->pan_func.get(sd->pan_obj, &px, &py); nx = px; - if (x < px) nx = x; - else if ((x + w) > (px + (cw - mx))) - { - nx = x + w - (cw - mx); - if (nx > x) nx = x; - } + if ((x < px) && ((x + w) < (px + (cw - mx)))) nx = x; + else if ((x > px) && ((x + w) > (px + (cw - mx)))) nx = x + w - (cw - mx); ny = py; - if (y < py) ny = y; - else if ((y + h) > (py + (ch - my))) - { - ny = y + h - (ch - my); - if (ny > y) ny = y; - } + if ((y < py) && ((y + h) < (py + (ch - my)))) ny = y; + else if ((y > py) && ((y + h) > (py + (ch - my)))) ny = y + h - (ch - my); if ((nx == px) && (ny == py)) return; if ((sd->down.bounce_x_animator) || (sd->down.bounce_y_animator) || (sd->scrollto.x.animator) || (sd->scrollto.y.animator))