woohyun pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=9e7e4777de25ad29b1998a50ce2933e1ad77f286
commit 9e7e4777de25ad29b1998a50ce2933e1ad77f286 Author: WooHyun Jung <wh0705.j...@samsung.com> Date: Fri Jan 3 20:02:30 2014 +0900 widget: Fix a bug in elm_widget_newest_focus_order_get. When elm_widget_newest_focus_order_get is called with can_focus_only, only focusable objects should be the candidates for newest focused object. But there are cases that unfocusable object add +1 to newest_focus_order. --- src/lib/elm_widget.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index b1c5df5..708762a 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -4762,8 +4762,11 @@ _elm_widget_newest_focus_order_get(Eo *obj, void *_pd, va_list *list) best = NULL; if (*newest_focus_order < sd->focus_order) { - *newest_focus_order = sd->focus_order; - best = obj; + if (!can_focus_only || elm_widget_can_focus_get(obj)) + { + *newest_focus_order = sd->focus_order; + best = obj; + } } EINA_LIST_FOREACH(sd->subobjs, l, child) { @@ -4772,11 +4775,6 @@ _elm_widget_newest_focus_order_get(Eo *obj, void *_pd, va_list *list) if (!cur) continue; best = cur; } - if (can_focus_only) - { - if ((!best) || (!elm_widget_can_focus_get(best))) - return; - } *ret = best; return; } --