From 2435b69adac1d4f28f341d0e53c6f0d52bb7671f Mon Sep 17 00:00:00 2001 From: WooHyun Jung Date: Tue, 7 May 2013 20:57:59 +0900 Subject: [PATCH] [elm_widget] Fixed wrong logic when setting parent's child_can_focus as EINA_TRUE. --- src/lib/elm_widget.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index 40d1d07..754d941 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -1328,6 +1328,18 @@ elm_widget_can_focus_set(Evas_Object *obj, sd->can_focus = can_focus; if (sd->can_focus) { + /* update child_can_focus of parents */ + Evas_Object *o = obj; + + for (;;) + { + o = elm_widget_parent_get(o); + if (!o) break; + sd = evas_object_smart_data_get(o); + if (!sd || sd->child_can_focus) break; + sd->child_can_focus = EINA_TRUE; + } + evas_object_event_callback_add(obj, EVAS_CALLBACK_KEY_DOWN, _propagate_event, (void *)(long)EVAS_CALLBACK_KEY_DOWN); @@ -1337,21 +1349,6 @@ 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 { -- 2.7.4