From 4077d0ae9893a8120fd83ef6f2eaf9152fc417a2 Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Thu, 25 Apr 2013 15:10:50 +0900 Subject: [PATCH] [focus] update child_can_focus on parents, when an widget becomes focusable Change-Id: I24d50d1b78efac33987e337930f68a0782863707 --- src/lib/elm_widget.c | 15 +++++++++++++++ src/lib/els_scroller.c | 28 +--------------------------- 2 files changed, 16 insertions(+), 27 deletions(-) diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index a7db4f6..eda6c71 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -1339,6 +1339,21 @@ elm_widget_can_focus_set(Evas_Object *obj, evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_WHEEL, _propagate_event, (void *)(long)EVAS_CALLBACK_MOUSE_WHEEL); + + /* update child focusable-ness on parents, now that a + * focusable child got in */ + Elm_Widget_Smart_Data *sdp = sd; + if (!sd->child_can_focus) + { + sdp->child_can_focus = EINA_TRUE; + while (sdp->parent_obj) + { + if (sdp->child_can_focus) break; + + sdp->child_can_focus = EINA_TRUE; + sdp = evas_object_smart_data_get(sdp->parent_obj); + } + } } else { diff --git a/src/lib/els_scroller.c b/src/lib/els_scroller.c index b590ea5..e87a53c 100644 --- a/src/lib/els_scroller.c +++ b/src/lib/els_scroller.c @@ -2025,35 +2025,9 @@ _smart_event_mouse_up(void *data, Evas *e, Evas_Object *obj __UNUSED__, void *ev if ((_elm_config->thumbscroll_friction > 0.0) && (vel > _elm_config->thumbscroll_momentum_threshold)) { - int minx, miny, mx, my, px, py; - sd->pan_func.min_get(sd->pan_obj, &minx, &miny); - sd->pan_func.max_get(sd->pan_obj, &mx, &my); - sd->pan_func.get(sd->pan_obj, &px, &py); sd->down.dx = ((double)dx / at); sd->down.dy = ((double)dy / at); - if (((sd->down.dx > 0) && (sd->down.pdx > 0)) || - ((sd->down.dx < 0) && (sd->down.pdx < 0))) - if (px > minx && px < mx) - sd->down.dx += (double)sd->down.pdx * 1.5; // FIXME: * 1.5 - probably should be config - if (((sd->down.dy > 0) && (sd->down.pdy > 0)) || - ((sd->down.dy < 0) && (sd->down.pdy < 0))) - if (py > miny && py < my) - sd->down.dy += (double)sd->down.pdy * 1.5; // FIXME: * 1.5 - probably should be config - if (((sd->down.dx > 0) && (sd->down.pdx > 0)) || - ((sd->down.dx < 0) && (sd->down.pdx < 0)) || - ((sd->down.dy > 0) && (sd->down.pdy > 0)) || - ((sd->down.dy < 0) && (sd->down.pdy < 0))) - { - double tt = ecore_loop_time_get(); - double dtt = tt - sd->down.anim_start; - - if (dtt < 0.0) dtt = 0.0; - else if (dtt > _elm_config->thumbscroll_friction) - dtt = _elm_config->thumbscroll_friction; - sd->down.extra_time = _elm_config->thumbscroll_friction - dtt; - } - else - sd->down.extra_time = 0.0; + sd->down.extra_time = 0.0; sd->down.pdx = sd->down.dx; sd->down.pdy = sd->down.dy; ox = -sd->down.dx; -- 2.7.4