jaehyun pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=a7b501d94764f3cd183fcfb92fe201ab8f954dc2

commit a7b501d94764f3cd183fcfb92fe201ab8f954dc2
Author: Youngbok Shin <[email protected]>
Date:   Wed Mar 8 14:15:56 2017 +0900

    naviframe: keep unfocusable state of item before finishing item push/pop
    
    If item pop was started without focus at a naviframe object
    and the naviframe object got focus before finising item pop,
    the naviframe object could give focus to its first object of prev item.
    It could ruin focus orders and failed to restore previous focused
    object in the item.
    To keep consistency of focus policy, same logic will be applied to
    item push scenario.
    @fix
    
    Change-Id: Ia74bdce3620bd59622ef32a0cedf5fbd84815400
---
 src/lib/elementary/elc_naviframe.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/elc_naviframe.c 
b/src/lib/elementary/elc_naviframe.c
index 9bdd867..fb9f988 100644
--- a/src/lib/elementary/elc_naviframe.c
+++ b/src/lib/elementary/elc_naviframe.c
@@ -1166,6 +1166,7 @@ _on_item_show_finished(void *data,
 
    elm_object_signal_emit(VIEW(it), "elm,state,visible", "elm");
 
+   elm_widget_tree_unfocusable_set(VIEW(it), EINA_FALSE);
    _prev_page_focus_recover(it);
 
    if (sd->freeze_events)
@@ -1589,7 +1590,7 @@ _item_push_helper(Elm_Naviframe_Item_Data *item)
      {
         Elm_Naviframe_Op *nfo = calloc(1, sizeof (Elm_Naviframe_Op));
 
-        elm_widget_tree_unfocusable_set(VIEW(item), EINA_FALSE);
+        elm_widget_tree_unfocusable_set(VIEW(item), EINA_TRUE);
         elm_widget_tree_unfocusable_set(VIEW(top_item), EINA_TRUE);
 
         if (sd->freeze_events)
@@ -1806,7 +1807,6 @@ _elm_naviframe_item_pop(Eo *obj, Elm_Naviframe_Data *sd)
         Elm_Naviframe_Op *nfo = calloc(1, sizeof (Elm_Naviframe_Op));
 
         elm_widget_tree_unfocusable_set(VIEW(it), EINA_TRUE);
-        elm_widget_tree_unfocusable_set(VIEW(prev_it), EINA_FALSE);
 
         if (sd->freeze_events)
           {

-- 


Reply via email to