woohyun pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=b216de22610fd8831f03fd9fd32b9f4ffdd20c30

commit b216de22610fd8831f03fd9fd32b9f4ffdd20c30
Author: WooHyun Jung <wh0705.j...@samsung.com>
Date:   Mon Sep 30 10:09:23 2013 +0900

    elementary/naviframe.c : Because naviframe is focusable, it should set 
focus to itself when the new item is unfocusable.
---
 src/lib/elc_naviframe.c | 30 +++++++++++++++++++++++++-----
 1 file changed, 25 insertions(+), 5 deletions(-)

diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c
index d3fc708..a81e255 100644
--- a/src/lib/elc_naviframe.c
+++ b/src/lib/elc_naviframe.c
@@ -69,7 +69,12 @@ _prev_page_focus_recover(Elm_Naviframe_Item *it)
    if (newest)
      elm_object_focus_set(newest, EINA_TRUE);
    else
-     elm_object_focus_set(VIEW(it), EINA_TRUE);
+     {
+        if (elm_object_focus_allow_get(VIEW(it)))
+          elm_object_focus_set(VIEW(it), EINA_TRUE);
+        else
+          elm_object_focus_set(WIDGET(it), EINA_TRUE);
+     }
 }
 
 static void
@@ -1260,7 +1265,7 @@ _elm_naviframe_smart_focus_next(Eo *obj, void *_pd 
EINA_UNUSED, va_list *list)
    Eina_Bool int_ret;
 
    top_it = (Elm_Naviframe_Item *)elm_naviframe_top_item_get(obj);
-   if (!top_it) return;
+   if (!top_it) goto end;
 
    list_data_get = eina_list_data_get;
 
@@ -1274,8 +1279,15 @@ _elm_naviframe_smart_focus_next(Eo *obj, void *_pd 
EINA_UNUSED, va_list *list)
      }
 
    int_ret = elm_widget_focus_list_next_get(obj, l, list_data_get, dir, next);
-   if (ret) *ret = int_ret;
    eina_list_free(l);
+   if (ret) *ret = int_ret;
+
+end:
+   if (!*ret)
+     {
+        *next = obj;
+        *ret = !elm_widget_focus_get(obj);
+     }
 }
 
 static void
@@ -1521,7 +1533,12 @@ _item_push(Eo *obj, void *_pd, va_list *list)
         it->animator = ecore_animator_add(_push_transition_cb, it);
      }
    else
-     elm_object_focus_set(VIEW(it), EINA_TRUE);
+     {
+        if (elm_object_focus_allow_get(VIEW(it)))
+          elm_object_focus_set(VIEW(it), EINA_TRUE);
+        else
+          elm_object_focus_set(WIDGET(it), EINA_TRUE);
+     }
 
    sd->stack = eina_inlist_append(sd->stack, EINA_INLIST_GET(it));
 
@@ -1629,7 +1646,10 @@ _item_insert_after(Eo *obj, void *_pd, va_list *list)
                              EINA_FALSE);
         evas_object_show(VIEW(it));
         evas_object_hide(VIEW(after));
-        elm_object_focus_set(VIEW(it), EINA_TRUE);
+        if (elm_object_focus_allow_get(VIEW(it)))
+          elm_object_focus_set(VIEW(it), EINA_TRUE);
+        else
+          elm_object_focus_set(WIDGET(it), EINA_TRUE);
      }
 
    elm_layout_sizing_eval(obj);

-- 


Reply via email to