naviframe: keep unfocusable state of item before finishing item push/pop
authorYoungbok Shin <youngb.shin@samsung.com>
Wed, 8 Mar 2017 05:15:56 +0000 (14:15 +0900)
committerJaehyun Cho <jae_hyun.cho@samsung.com>
Wed, 8 Mar 2017 08:26:59 +0000 (17:26 +0900)
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

index 9bdd867..fb9f988 100644 (file)
@@ -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)
           {