widget: Fix a bug in elm_widget_newest_focus_order_get.
authorWooHyun Jung <wh0705.jung@samsung.com>
Fri, 3 Jan 2014 11:02:30 +0000 (20:02 +0900)
committerWooHyun Jung <wh0705.jung@samsung.com>
Fri, 3 Jan 2014 11:02:30 +0000 (20:02 +0900)
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

index b1c5df50cd056f5a47e21ec85734e1210ca5733e..708762a1ab6c814cf2cfef562269ad27d3e63cd0 100644 (file)
@@ -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;
 }